diff --git a/.github/ISSUE_TEMPLATE/issue_form.yml b/.github/ISSUE_TEMPLATE/issue_form.yml index b891afba..39a5e2eb 100644 --- a/.github/ISSUE_TEMPLATE/issue_form.yml +++ b/.github/ISSUE_TEMPLATE/issue_form.yml @@ -57,8 +57,10 @@ body: - Raspberry Pi OS Lite 64-bit Debian 12 (bookworm) - Raspberry Pi OS Lite 32-bit Debian 12 (bookworm) - Raspberry Pi OS Desktop 64-bit Debian 12 (bookworm) - - Raspberry Pi OS Lite 64-bit Debian 11 (bullseye) - - Raspberry Pi OS Lite 32-bit Debian 11 (bullseye) + - Raspberry Pi OS Lite 64-bit Debian 11 (bullseye) + - Raspberry Pi OS Lite 32-bit Debian 11 (bullseye) + - Kali Linux 2025.3 64-bit + - Kali Linux 2025.3 32-bit - Armbian 23.11 (jammy) - Debian 12 (bookworm) validations: diff --git a/README.md b/README.md index d0e2e73b..ef886ca9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![RaspAP Hero](https://i.imgur.com/aNAG3Wa.jpeg) -[![Release 3.4.5](https://img.shields.io/badge/release-v3.4.5-green)](https://github.com/raspap/raspap-webgui/releases) [![Awesome](https://awesome.re/badge.svg)](https://github.com/thibmaek/awesome-raspberry-pi) [![Join Insiders](https://img.shields.io/static/v1?label=Insiders&message=%E2%9D%A4&logo=GitHub&color=ff69b4)](https://github.com/sponsors/RaspAP) [![Build Status](https://app.travis-ci.com/RaspAP/raspap-webgui.svg?branch=master)](https://app.travis-ci.com/RaspAP/raspap-webgui) [![Crowdin](https://badges.crowdin.net/raspap/localized.svg)](https://crowdin.com/project/raspap) [![Twitter URL](https://img.shields.io/twitter/url?label=%40RaspAP&logoColor=%23d8224c&url=https%3A%2F%2Ftwitter.com%2Frasp_ap)](https://twitter.com/rasp_ap) [![Reddit](https://img.shields.io/badge/%2Fr%2FRaspAP-e05d44?style=flat&logo=Reddit&logoColor=white&labelColor=e05d44&color=b14835)](https://reddit.com/r/RaspAP) [![Discord](https://img.shields.io/discord/642436993451819018?color=7289DA&label=Discord&logo=discord&style=flat)](https://discord.gg/KVAsaAR) +[![Release 3.5.1](https://img.shields.io/badge/release-v3.5.1-green)](https://github.com/raspap/raspap-webgui/releases) [![Awesome](https://awesome.re/badge.svg)](https://github.com/thibmaek/awesome-raspberry-pi) [![Join Insiders](https://img.shields.io/static/v1?label=Insiders&message=%E2%9D%A4&logo=GitHub&color=ff69b4)](https://github.com/sponsors/RaspAP) [![Build Status](https://app.travis-ci.com/RaspAP/raspap-webgui.svg?branch=master)](https://app.travis-ci.com/RaspAP/raspap-webgui) [![Crowdin](https://badges.crowdin.net/raspap/localized.svg)](https://crowdin.com/project/raspap) [![Twitter URL](https://img.shields.io/twitter/url?label=%40RaspAP&logoColor=%23d8224c&url=https%3A%2F%2Ftwitter.com%2Frasp_ap)](https://twitter.com/rasp_ap) [![Reddit](https://img.shields.io/badge/%2Fr%2FRaspAP-e05d44?style=flat&logo=Reddit&logoColor=white&labelColor=e05d44&color=b14835)](https://reddit.com/r/RaspAP) [![Discord](https://img.shields.io/discord/642436993451819018?color=7289DA&label=Discord&logo=discord&style=flat)](https://discord.gg/KVAsaAR) RaspAP is feature-rich wireless router software that _just works_ on many popular [Debian-based devices](#supported-operating-systems), including the Raspberry Pi. Our [custom OS images](#pre-built-image), [Quick installer](#quick-installer) and [Docker container](#docker-support) create a known-good default configuration for all current Raspberry Pis with onboard wireless. A fully responsive, mobile-ready interface gives you control over the relevant services and networking options. Advanced DHCP settings, [WireGuard](https://docs.raspap.com/wireguard/), [Tailscale](https://docs.raspap.com/tailscale/) and [OpenVPN](https://docs.raspap.com/openvpn/) support, [SSL certificates](https://docs.raspap.com/ssl/), [ad blocking](#ad-blocking), security audits, [captive portal integration](https://docs.raspap.com/captive/), themes and [multilingual options](https://docs.raspap.com/translations/) are included. @@ -72,12 +72,12 @@ The Quick installer will respond to several [command line arguments](https://doc ### Initial settings After completing either of these setup options, the wireless AP network will be configured as follows: -* IP address: 10.3.141.1 - * Username: admin - * Password: secret -* DHCP range: 10.3.141.50 — 10.3.141.254 -* SSID: `raspi-webgui` -* Password: ChangeMe +* IP address: `10.3.141.1` + * Username: `admin` + * Password: `secret` +* DHCP range: `10.3.141.50` — `10.3.141.254` +* SSID: `RaspAP` +* Password: `ChangeMe` It's _strongly recommended_ that your first post-install action is to change the default admin [authentication](https://docs.raspap.com/authentication/) settings. Thereafter, your AP's [basic settings](https://docs.raspap.com/ap-basics/) and many [advanced options](https://docs.raspap.com/ap-basics#advanced-options) are now ready to be modified by RaspAP. @@ -95,13 +95,13 @@ A tangible side benefit of sponsorship is that **Insiders** are able to help _st WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be considerably more performant than OpenVPN, and is generally regarded as the most secure, easiest to use, and simplest VPN solution for modern Linux distributions. -WireGuard may be optionally installed by the [Quick Installer](https://docs.raspap.com/quick/). Once this is done, you can manage local (server) settings, create a peer configuration and control the `wg-quick` service with RaspAP. +WireGuard is included in the pre-built OS and may be optionally installed by the [Quick Installer](https://docs.raspap.com/quick/). Once this is done, you can manage local (server) settings, create a peer configuration and control the `wg-quick` service with RaspAP. Details are [provided here](https://docs.raspap.com/wireguard/). ## OpenVPN support -OpenVPN may be optionally installed by the Quick Installer. Once this is done, you can [manage client configurations](https://docs.raspap.com/openvpn/) and the `openvpn-client` service with RaspAP. +OpenVPN is included in the pre-built OS and may be optionally installed by the Quick Installer. Once this is done, you can [manage client configurations](https://docs.raspap.com/openvpn/) and the `openvpn-client` service with RaspAP. To configure an OpenVPN client, upload a valid .ovpn file and, optionally, specify your login credentials. RaspAP will store your client configuration and add firewall rules to forward traffic from OpenVPN's `tun0` interface to your configured wireless interface. @@ -114,22 +114,20 @@ Several popular VPN providers include a Linux Command Line Interface (CLI) for i See our [VPN provider documentation](https://docs.raspap.com/providers/) for more information. ## Ad Blocking -This feature uses DNS blacklisting to block requests for ads, trackers and other undesirable hosts. To enable ad blocking, simply respond to the prompt during the installation. As a beta release, we encourage testing and feedback from users of RaspAP. +This feature uses DNS blacklisting to block requests for ads, trackers and other undesirable hosts. Ad blocking is included in the pre-built OS and may be optionally installed by the [Quick Installer](https://docs.raspap.com/quick/). Thereafter, you may choose between several of the best available [blocklist sources](https://docs.raspap.com/features-core/adblock/#blocklist-sources) to suit your needs. Details are [provided here](https://docs.raspap.com/adblock/). ## Bridged AP -By default RaspAP configures a routed AP for your clients to connect to. A bridged AP configuration is also possible. Slide the **Bridged AP mode** toggle under the **Advanced** tab of **Configure hotspot**, then save and restart the hotspot. +By default RaspAP configures a routed AP for your clients to connect to. A bridged AP configuration is also possible. Select the **Bridged AP mode** toggle under the **Advanced** tab of **Hotspot**, configure a static IP address for the bridge interface, then save and restart the AP. -**Note:** In bridged mode, all routing capabilities are handled by your upstream router. Because your router assigns IP addresses to your device's hotspot and its clients, you might not be able to reach the RaspAP web interface from the default `10.3.141.1` address. Instead use your RPi's hostname followed by `.local` to access the RaspAP web interface. With Raspbian default settings, this should look like `raspberrypi.local`. Alternate methods are [discussed here](https://www.raspberrypi.org/documentation/remote-access/ip-address.md). - -More information on Bridged AP mode is provided [in our documentation](https://docs.raspap.com/bridged/). +Details on Bridged AP mode are [provided here](https://docs.raspap.com/bridged/). ## Manual installation -Detailed manual setup instructions are provided [on our documentation site](https://docs.raspap.com/manual/). +Detailed manual setup instructions are [provided here](https://docs.raspap.com/manual/). ## 802.11ac 5GHz support -RaspAP provides an 802.11ac wireless mode option for supported hardware (currently the RPi 3B+/4 and compatible Orange Pi models) and wireless regulatory domains. See [this](https://docs.raspap.com/ap-basics/#80211ac-5-ghz) for more information. +RaspAP provides an 802.11ac wireless mode option for supported hardware (currently the RPi 3B+, 4, 5 and compatible Orange Pi models) and wireless regulatory domains. See [this](https://docs.raspap.com/ap-basics/#80211ac-5-ghz) for more information. ## Supported operating systems RaspAP was originally made for Raspbian, but now also installs on the following Debian-based distros. @@ -143,10 +141,13 @@ RaspAP was originally made for Raspbian, but now also installs on the following | Raspberry Pi OS Desktop | 64-bit Debian 12 (bookworm) | ARM | Official | | Raspberry Pi OS Lite | 64-bit Debian 11 (bullseye) | ARM | Official | | Raspberry Pi OS Lite | 32-bit Debian 11 (bullseye) | ARM | Official | +| Kali Linux | 2025.3 | [ARM 64-bit](https://www.kali.org/get-kali/#kali-arm) | Beta | +| Kali Linux | 2025.3 | [ARM 32-bit](https://www.kali.org/get-kali/#kali-arm) | Beta | +| Debian 13 | trixie | [ARM](https://raspi.debian.net/tested-images/) | Beta | +| Debian 12 | bookworm | [ARM](https://raspi.debian.net/tested-images/) | Beta | | Armbian | 23.11 (jammy) | ARM | Beta | -| Debian | 12 (bookworm) | ARM / x86_64 | Beta | - + You are also encouraged to use RaspAP's community-led [Docker container](#docker-support). Please note that "supported" is not a guarantee. If you are able to improve support for your preferred distro, we encourage you to [actively contribute](#how-to-contribute) to the project. @@ -164,8 +165,6 @@ curl -sL https://install.raspap.com | bash -s -- --cert More information on SSL certificates and HTTPS support is available [in our documentation](https://docs.raspap.com/ssl/). ## Docker support - - As an alternative to the [Quick installer](#quick-installer), RaspAP may be run in an isolated, portable [Docker container](https://docs.raspap.com/docker/). See the [RaspAP-docker repo](https://github.com/RaspAP/raspap-docker/) for more information. @@ -174,7 +173,9 @@ See the [RaspAP-docker repo](https://github.com/RaspAP/raspap-docker/) for more RaspAP's integrated `PluginManager` provides a framework for developers to create custom plugins. To facilitate this, a `SamplePlugin` [repository](https://github.com/RaspAP/SamplePlugin) is available to get developers started on the right track. If you'd like to develop your own plugin for RaspAP, see the [documentation](https://docs.raspap.com/custom-plugins/) or get started right away by forking the [SamplePlugin](https://github.com/RaspAP/SamplePlugin). ## Multilingual support -RaspAP uses [GNU Gettext](https://www.gnu.org/software/gettext/) to manage multilingual messages. In order to use RaspAP with one of our supported translations, you must configure a corresponding language package on your RPi. To list languages currently installed on your system, use `locale -a` at the shell prompt. To generate new locales, run `sudo dpkg-reconfigure locales` and select any other desired locales. Details are provided on our [documentation site](https://docs.raspap.com/translations/). +RaspAP uses [GNU Gettext](https://www.gnu.org/software/gettext/) to manage multilingual messages. Our pre-built OS includes the `locales-all` package, eliminating the need to manually generate locales. + +If you're using the Quick Installer or Manual setup methods, you must configure a corresponding language package for your system. To list languages currently installed on your system, use `locale -a` at the shell prompt. To generate new locales, run `sudo dpkg-reconfigure locales` and select any other desired locales. Details are provided [here](https://docs.raspap.com/translations/). See this list of [supported languages](https://docs.raspap.com/translations/#supported-languages) that are actively maintained by volunteer translators. If your language is not supported, why not [contribute a translation](https://docs.raspap.com/translations/#contributing-to-a-translation)? Contributors will receive credit as the original translators. diff --git a/ajax/networking/get_channel.php b/ajax/networking/get_channel.php index 716456c4..e158588e 100644 --- a/ajax/networking/get_channel.php +++ b/ajax/networking/get_channel.php @@ -13,7 +13,9 @@ foreach ($hostapdconfig as $hostapdconfigline) { continue; } $arrLine = explode("=", $hostapdconfigline); - $arrConfig[$arrLine[0]]=$arrLine[1]; + if (count($arrLine) >= 2) { + $arrConfig[$arrLine[0]]=$arrLine[1]; + } }; $channel = intval($arrConfig['channel']); echo json_encode($channel); diff --git a/app/img/right-solid.php b/app/img/right-solid.php index 27ca8f79..716e3408 100644 --- a/app/img/right-solid.php +++ b/app/img/right-solid.php @@ -1,5 +1,8 @@ + stroke="" stroke-width="4"/> + stroke="" stroke-width="4"/> + stroke="" stroke-width="4"/> + stroke="" stroke-width="4"/> + stroke="" stroke-width="4"/> diff --git a/app/img/wifi-qr-code.php b/app/img/wifi-qr-code.php index 19171094..a0017c3a 100755 --- a/app/img/wifi-qr-code.php +++ b/app/img/wifi-qr-code.php @@ -12,6 +12,12 @@ if (!isset($_SERVER['HTTP_REFERER'])) { $hostapd = parse_ini_file(RASPI_HOSTAPD_CONFIG, false, INI_SCANNER_RAW); +// handle parse failure +if ($hostapd === false) { + header('HTTP/1.0 500 Internal Server Error'); + exit('Error: Unable to parse hostapd configuration'); +} + // assume WPA encryption and get the passphrase $type = "WPA"; $password = isset($hostapd['wpa_psk']) ? $hostapd['wpa_psk'] : $hostapd['wpa_passphrase']; diff --git a/app/js/ajax/main.js b/app/js/ajax/main.js index f8bf997a..ce9edf6b 100644 --- a/app/js/ajax/main.js +++ b/app/js/ajax/main.js @@ -381,12 +381,15 @@ function loadChannelSelect(selected) { // Map selected hw_mode to available channels if (hw_mode === 'a') { selectableChannels = data.filter(item => item.MHz.toString().startsWith('5')); - } else if (hw_mode !== 'ac') { - selectableChannels = data.filter(item => item.MHz.toString().startsWith('24')); - } else if (hw_mode === 'b') { - selectableChannels = data.filter(item => item.MHz.toString().startsWith('24')); } else if (hw_mode === 'ac') { selectableChannels = data.filter(item => item.MHz.toString().startsWith('5')); + } else if (hw_mode === 'ax') { + selectableChannels = data.filter(item => item.MHz.toString().startsWith('5')); + } else if (hw_mode === 'be') { + selectableChannels = data.filter(item => item.MHz.toString().startsWith('5')); + } else { + // hw_mode 'b', 'g', or default to 2.4GHz + selectableChannels = data.filter(item => item.MHz.toString().startsWith('24')); } // If selected channel doeesn't exist in allowed channels, set default or null (unsupported) diff --git a/app/js/ui/main.js b/app/js/ui/main.js index 35ea3153..75aa2777 100644 --- a/app/js/ui/main.js +++ b/app/js/ui/main.js @@ -457,6 +457,36 @@ function setDhcpFieldsDisabled() { $('#txtmetric').prop('disabled', true); } +document.addEventListener('DOMContentLoaded', function() { + const dhcpCheckbox = document.getElementById('dhcp-iface'); + const rangeStart = document.getElementById('txtrangestart'); + const rangeEnd = document.getElementById('txtrangeend'); + const leaseTime = document.getElementById('txtrangeleasetime'); + + function updateRequiredFields() { + const isChecked = dhcpCheckbox.checked === true; + + if (isChecked) { + rangeStart.setAttribute('required', 'required'); + rangeEnd.setAttribute('required', 'required'); + leaseTime.setAttribute('required', 'required'); + } else { + rangeStart.removeAttribute('required'); + rangeEnd.removeAttribute('required'); + leaseTime.removeAttribute('required'); + + rangeStart.classList.remove('is-invalid', 'is-valid'); + rangeEnd.classList.remove('is-invalid', 'is-valid'); + leaseTime.classList.remove('is-invalid', 'is-valid'); + } + } + + // set initial state + updateRequiredFields(); + setTimeout(updateRequiredFields, 100); + dhcpCheckbox.addEventListener('change', updateRequiredFields); +}); + // Static Array method Array.range = (start, end) => Array.from({length: (end - start)}, (v, k) => k + start); diff --git a/config/config.php b/config/config.php index 546441e6..e9a41827 100755 --- a/config/config.php +++ b/config/config.php @@ -23,7 +23,6 @@ define('RASPI_ADBLOCK_CONFIG', RASPI_DNSMASQ_PREFIX.'adblock.conf'); define('RASPI_HOSTAPD_CONFIG', '/etc/hostapd/hostapd.conf'); define('RASPI_DHCPCD_CONFIG', '/etc/dhcpcd.conf'); define('RASPI_DHCPCD_LOG', '/var/log/dnsmasq.log'); -define('RASPI_HOSTAPD_LOG', '/tmp/hostapd.log'); define('RASPI_WPA_SUPPLICANT_CONFIG', '/etc/wpa_supplicant/wpa_supplicant.conf'); define('RASPI_HOSTAPD_CTRL_INTERFACE', '/var/run/hostapd'); define('RASPI_WPA_CTRL_INTERFACE', '/var/run/wpa_supplicant'); diff --git a/config/defaults.json b/config/defaults.json index c9770cc1..a586eebd 100644 --- a/config/defaults.json +++ b/config/defaults.json @@ -14,7 +14,7 @@ "# N", "ieee80211n=1", "require_ht=1", - "ht_capab=[MAX-AMSDU-3839][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]", + "ht_capab=[MAX-AMSDU-3839][{HT40_DIR}][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]", "# AC", "ieee80211ac=1", "require_vht=1", @@ -25,6 +25,148 @@ "vht_oper_centr_freq_seg0_idx={VHT_FREQ_IDX}" ] }, + "ax": { + "settings": [ + "# Basic settings", + "hw_mode=a", + "# Enable 802.11n/ac", + "ieee80211d=1", + "ieee80211n=1", + "ieee80211ac=1", + "# Enable 802.11ax", + "ieee80211ax=1", + "# HE 802.11ax capabilities", + "he_su_beamformer=1", + "he_su_beamformee=1", + "he_mu_beamformer=1", + "# BSS color for spatial reuse, value 1-63", + "he_bss_color=1", + "he_oper_chwidth=1", + "# HE/VHT channel widths", + "he_oper_chwidth=1", + "vht_oper_chwidth=1", + "he_oper_centr_freq_seg0_idx={HE_FREQ_IDX}", + "vht_oper_centr_freq_seg0_idx={VHT_FREQ_IDX}", + "# HT 802.11n capabilities", + "ht_capab=[{HT40_DIR}][LDPC][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][MAX-AMSDU-7935]", + "# VHT capabilities 802.11ac", + "vht_capab=[RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP7]", + "# WMM/QoS", + "wmm_enabled=1" + ] + }, + "be": { + "settings": [ + "# Basic settings", + "hw_mode=a", + "# Enable 802.11n/ac/ax", + "ieee80211n=1", + "ieee80211ac=1", + "ieee80211ax=1", + "# Maximum MPDU Length of HE 6 GHz band capabilities.", + "# Indicates maximum MPDU length", + "# 0 = 3895 octets", + "# 1 = 7991 octets", + "# 2 = 11454 octets", + "he_6ghz_max_mpdu=2", + "# Maximum A-MPDU Length Exponent of HE 6 GHz band capabilities. Indicates", + "# the maximum length of A-MPDU pre-EOF padding that # the STA can receive.", + "# This field is an integer in the range of 0 to 7. The length defined by", + "# this field is equal to 2 pow -1", + "# octets", + "# 0 = AMPDU length of 8k", + "# 1 = AMPDU length of 16k", + "# 2 = AMPDU length of 32k", + "# 3 = AMPDU length of 65k", + "# 4 = AMPDU length of 131k", + "# 5 = AMPDU length of 262kv", + "# 6 = AMPDU length of 524k", + "# 7 = AMPDU length of 1048k", + "he_6ghz_max_ampdu_len_exp=7", + "# 0 = Indoor AP", + "# 1 = Standard power AP", + "# 2 = Very low power AP", + "# 3 = Indoor enabled AP", + "# 4 = Indoor standard power AP", + "he_6ghz_reg_pwr_type=0", + "# HE beamforming capabilities", + "he_su_beamformer=1", + "he_su_beamformee=1", + "he_mu_beamformer=1", + "he_mu_edca_qos_info_param_count=0", + "he_mu_edca_qos_info_q_ack=0", + "he_mu_edca_qos_info_queue_request=0", + "he_mu_edca_qos_info_txop_request=0", + "he_mu_edca_ac_be_aifsn=8", + "he_mu_edca_ac_be_aci=0", + "he_mu_edca_ac_be_ecwmin=9", + "he_mu_edca_ac_be_ecwmax=10", + "he_mu_edca_ac_be_timer=255", + "he_mu_edca_ac_bk_aifsn=15", + "he_mu_edca_ac_bk_aci=1", + "he_mu_edca_ac_bk_ecwmin=9", + "he_mu_edca_ac_bk_ecwmax=10", + "he_mu_edca_ac_bk_timer=255", + "he_mu_edca_ac_vi_ecwmin=5", + "he_mu_edca_ac_vi_ecwmax=7", + "he_mu_edca_ac_vi_aifsn=5", + "he_mu_edca_ac_vi_aci=2", + "he_mu_edca_ac_vi_timer=255", + "he_mu_edca_ac_vo_aifsn=5", + "he_mu_edca_ac_vo_aci=3", + "he_mu_edca_ac_vo_ecwmin=5", + "he_mu_edca_ac_vo_ecwmax=7", + "he_mu_edca_ac_vo_timer=255", + "# EHT beamforming capabilities", + "eht_su_beamformer=0", + "eht_su_beamformee=0", + "eht_mu_beamformer=0", + "# used by clients to discern the source of interference", + "# each AP in your area needs to use a different number", + "# allowed: 1-63", + "he_bss_color=37", + "# 160 MHz for HE", + "he_oper_chwidth=2", + "he_oper_centr_freq_seg0_idx={HE_FREQ_IDX}", + "# IEEE 802.11be WiFi 7 configuration", + "ieee80211be=1", + "# EHT configuration", + "eht_su_beamformer=1", + "eht_su_beamformee=1", + "eht_mu_beamformer=1", + "# EHT operating channel information; see matching he_* parameters for details.", + "# The field eht_oper_centr_freq_seg0_idx field is used to indicate center", + "# frequency of 40, 80, and 160 MHz bandwidth operation.", + "# In the 6 GHz band, eht_oper_chwidth is ignored and the channel width is", + "# derived from the configured operating class IEEE P802.11be/D1.5,", + "# Annex E.1 - Country information and operating classes.", + "# Channel width 0 = 40 MHz, 1 = 80 Mhz, 2 = 160 Mhz", + "eht_oper_chwidth=2", + "eht_oper_centr_freq_seg0_idx={VHT_FREQ_IDX}", + "# VHT operation parameters", + "vht_oper_chwidth=2", + "vht_oper_centr_freq_seg0_idx={VHT_FREQ_IDX}", + "vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][SHORT-GI-160][TX-STBC-2BY1][RX-STBC-1][SU-BEAMFORMER][SU-BEAMFORMEE][MU-BEAMFORMER][MU-BEAMFORMEE]", + "# WMM configuration", + "wmm_enabled=1", + "wmm_ac_bk_cwmin=4", + "wmm_ac_bk_cwmax=10", + "wmm_ac_bk_aifs=7", + "wmm_ac_bk_txop_limit=0", + "wmm_ac_be_aifs=3", + "wmm_ac_be_cwmin=4", + "wmm_ac_be_cwmax=10", + "wmm_ac_be_txop_limit=0", + "wmm_ac_vi_aifs=2", + "wmm_ac_vi_cwmin=3", + "wmm_ac_vi_cwmax=4", + "wmm_ac_vi_txop_limit=94", + "wmm_ac_vo_aifs=2", + "wmm_ac_vo_cwmin=2", + "wmm_ac_vo_cwmax=3", + "wmm_ac_vo_txop_limit=47" + ] + }, "g": { "settings": [ "hw_mode=g", diff --git a/includes/configure_client.php b/includes/configure_client.php old mode 100755 new mode 100644 index 097b9ac6..70999efe --- a/includes/configure_client.php +++ b/includes/configure_client.php @@ -3,7 +3,7 @@ use RaspAP\Networking\Hotspot\WiFiManager; /** - * + * WiFi client configuration page handler * */ function DisplayWPAConfig() @@ -16,17 +16,15 @@ function DisplayWPAConfig() $wifi->knownWifiStations($networks); $wifi->setKnownStationsWPA($networks); - $iface = escapeshellarg($_SESSION['wifi_client_interface']); + $clientInterface = $_SESSION['wifi_client_interface']; if (isset($_POST['connect'])) { $netid = intval($_POST['connect']); - $cmd = "sudo wpa_cli -i $iface select_network $netid"; - $return = shell_exec($cmd); - sleep(2); - if (trim($return) == "FAIL") { - $status->addMessage('WPA command line client returned failure. Check your adapter.', 'danger'); - } else { + + if ($wifi->connectToNetwork($clientInterface, $netid)) { $status->addMessage('New network selected', 'success'); + } else { + $status->addMessage('WPA command line client returned failure. Check your adapter.', 'danger'); } } elseif (isset($_POST['wpa_reinit'])) { $status->addMessage('Attempting to reinitialize wpa_supplicant', 'warning'); @@ -34,120 +32,52 @@ function DisplayWPAConfig() $result = $wifi->reinitializeWPA($force_remove); } elseif (isset($_POST['client_settings'])) { $tmp_networks = $networks; - if ($wpa_file = fopen('/tmp/wifidata', 'w')) { - fwrite($wpa_file, 'ctrl_interface=DIR=' . RASPI_WPA_CTRL_INTERFACE . ' GROUP=netdev' . PHP_EOL); - fwrite($wpa_file, 'update_config=1' . PHP_EOL); - foreach (array_keys($_POST) as $post) { + foreach (array_keys($_POST) as $post) { - if (preg_match('/delete(\d+)/', $post, $post_match)) { - $network = $tmp_networks[$_POST['ssid' . $post_match[1]]]; - $netid = $network['index']; - exec('sudo wpa_cli -i ' . $iface . ' disconnect ' . $netid); - exec('sudo wpa_cli -i ' . $iface . ' remove_network ' . $netid); - unset($tmp_networks[$_POST['ssid' . $post_match[1]]]); + if (preg_match('/delete(\d+)/', $post, $post_match)) { + $network = $tmp_networks[$_POST['ssid' . $post_match[1]]]; + $netid = $network['index']; + $wifi->deleteNetwork($clientInterface, $netid); + unset($tmp_networks[$_POST['ssid' . $post_match[1]]]); + } elseif (preg_match('/disconnect(\d+)/', $post, $post_match)) { + $network = $tmp_networks[$_POST['ssid' . $post_match[1]]]; + $netid = $network['index']; + $wifi->disconnectNetwork($clientInterface, $netid); + } elseif (preg_match('/update(\d+)/', $post, $post_match)) { + // NB, multiple protocols are separated with a forward slash ('/') + $protocol = $_POST['protocol' . $post_match[1]] === $wifi::SECURITY_OPEN ? $wifi::SECURITY_OPEN : 'WPA'; + $tmp_networks[$_POST['ssid' . $post_match[1]]] = array( + 'protocol' => $protocol, + 'passphrase' => $_POST['passphrase' . $post_match[1]] ?? '', + 'configured' => true + ); + if (array_key_exists('priority' . $post_match[1], $_POST)) { + $tmp_networks[$_POST['ssid' . $post_match[1]]]['priority'] = $_POST['priority' . $post_match[1]]; + } + $network = $tmp_networks[$_POST['ssid' . $post_match[1]]]; - } elseif (preg_match('/update(\d+)/', $post, $post_match)) { - // NB, multiple protocols are separated with a forward slash ('/') - $tmp_networks[$_POST['ssid' . $post_match[1]]] = array( - 'protocol' => ( $_POST['protocol' . $post_match[1]] === 'Open' ? 'Open' : 'WPA' ), - 'passphrase' => $_POST['passphrase' . $post_match[1]], - 'configured' => true - ); - if (array_key_exists('priority' . $post_match[1], $_POST)) { - $tmp_networks[$_POST['ssid' . $post_match[1]]]['priority'] = $_POST['priority' . $post_match[1]]; - } - $network = $tmp_networks[$_POST['ssid' . $post_match[1]]]; - $ssid = escapeshellarg('"'.$_POST['ssid' . $post_match[1]].'"'); - $psk = escapeshellarg('"'.$_POST['passphrase' . $post_match[1]].'"'); - $netid = trim(shell_exec("sudo wpa_cli -i $iface add_network")); - if (isset($netid)) { - $commands = [ - "sudo wpa_cli -i $iface set_network $netid ssid $ssid", - "sudo wpa_cli -i $iface set_network $netid psk $psk", - "sudo wpa_cli -i $iface enable_network $netid" - ]; - foreach ($commands as $cmd) { - exec($cmd); - } - } else { - $status->addMessage('Unable to add network with WPA command line client', 'warning'); - } + $ssid = $_POST['ssid' . $post_match[1]]; + $passphrase = $_POST['passphrase' . $post_match[1]] ?? ''; + + $netid = $wifi->updateNetwork($clientInterface, $ssid, $passphrase, $protocol); + if ($netid === null) { + $status->addMessage('Unable to add network with WPA command line client', 'warning'); } } + } - $ok = true; - foreach ($tmp_networks as $ssid => $network) { - if ($network['protocol'] === 'Open') { - fwrite($wpa_file, "network={".PHP_EOL); - fwrite($wpa_file, "\tssid=\"".$ssid."\"".PHP_EOL); - fwrite($wpa_file, "\tkey_mgmt=NONE".PHP_EOL); - fwrite($wpa_file, "\tscan_ssid=1".PHP_EOL); - if (array_key_exists('priority', $network)) { - fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL); - } - fwrite($wpa_file, "}".PHP_EOL); - } else { - if (strlen($network['passphrase']) >=8 && strlen($network['passphrase']) <= 63) { - unset($wpa_passphrase); - unset($line); - exec('wpa_passphrase '. $wifi->ssid2utf8( escapeshellarg($ssid) ) . ' ' . escapeshellarg($network['passphrase']), $wpa_passphrase); - foreach ($wpa_passphrase as $line) { - if (preg_match('/^\s*}\s*$/', $line)) { - if (array_key_exists('priority', $network)) { - fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL); - } - fwrite($wpa_file, $line.PHP_EOL); - } else { - if ( preg_match('/\\\\x[0-9A-Fa-f]{2}/',$ssid) && strpos($line, "ssid=\"") !== false ) { - fwrite($wpa_file, "\tssid=P\"".$ssid."\"".PHP_EOL); - } else { - fwrite($wpa_file, $line.PHP_EOL); - } - } - } - } elseif (strlen($network['passphrase']) == 0 && strlen($network['passkey']) == 64) { - $line = "\tpsk=" . $network['passkey']; - fwrite($wpa_file, "network={".PHP_EOL); - fwrite($wpa_file, "\tssid=\"".$ssid."\"".PHP_EOL); - fwrite($wpa_file, $line.PHP_EOL); - if (array_key_exists('priority', $network)) { - fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL); - } - fwrite($wpa_file, "}".PHP_EOL); - } else { - $status->addMessage('WPA passphrase must be between 8 and 63 characters', 'danger'); - $ok = false; - } - } - } + $result = $wifi->writeWpaSupplicant($tmp_networks, $clientInterface); - if ($ok) { - system('sudo cp /tmp/wifidata ' . RASPI_WPA_SUPPLICANT_CONFIG, $returnval); - if ($returnval == 0) { - exec('sudo wpa_cli -i ' . $_SESSION['wifi_client_interface'] . ' reconfigure', $reconfigure_out, $reconfigure_return); - if ($reconfigure_return == 0) { - $status->addMessage('Wifi settings updated successfully', 'success'); - $networks = $tmp_networks; - } else { - $status->addMessage('Wifi settings updated but cannot restart (cannot execute "wpa_cli reconfigure")', 'danger'); - } - } else { - $status->addMessage('Wifi settings failed to be updated', 'danger'); - } - } + if ($result['success']) { + $status->addMessage($result['message'], 'success'); + $networks = $tmp_networks; } else { - $status->addMessage('Failed to update wifi settings', 'danger'); + $status->addMessage($result['message'], 'danger'); } } - $clientInterface = $_SESSION['wifi_client_interface']; - - exec('ip a show '.$clientInterface, $stdoutIp); - $stdoutIpAllLinesGlued = implode(" ", $stdoutIp); - $stdoutIpWRepeatedSpaces = preg_replace('/\s\s+/', ' ', $stdoutIpAllLinesGlued); - preg_match('/state (UP|DOWN)/i', $stdoutIpWRepeatedSpaces, $matchesState) || $matchesState[1] = 'unknown'; - $ifaceStatus = strtolower($matchesState[1]) ? "up" : "down"; + $ifaceStatus = $wifi->getInterfaceStatus($clientInterface); echo renderTemplate("configure_client", compact("status", "clientInterface", "ifaceStatus")); } diff --git a/includes/dashboard.php b/includes/dashboard.php index 441cd052..461b6476 100755 --- a/includes/dashboard.php +++ b/includes/dashboard.php @@ -44,6 +44,12 @@ function DisplayDashboard(&$extraFooterScripts): void $plugins = $pluginManager->getInstalledPlugins(); $bridgedEnable = getBridgedState(); + if ($bridgedEnable) { + $interface = 'br0'; + $details = $dashboard->getInterfaceDetails($interface); + $connectionType = 'ethernet'; + } + // handle page actions if (!empty($_POST)) { $status = $dashboard->handlePageAction($state, $_POST, $status, $interface); diff --git a/includes/defaults.php b/includes/defaults.php index 3408cfb3..2c71ca10 100755 --- a/includes/defaults.php +++ b/includes/defaults.php @@ -7,7 +7,7 @@ if (!defined('RASPI_CONFIG')) { $defaults = [ 'RASPI_BRAND_TEXT' => 'RaspAP', 'RASPI_BRAND_TITLE' => RASPI_BRAND_TEXT.' Admin Panel', - 'RASPI_VERSION' => '3.4.5', + 'RASPI_VERSION' => '3.5.1', 'RASPI_CONFIG_NETWORK' => RASPI_CONFIG.'/networking/defaults.json', 'RASPI_CONFIG_PROVIDERS' => 'config/vpn-providers.json', 'RASPI_CONFIG_API' => RASPI_CONFIG.'/api', @@ -28,7 +28,6 @@ $defaults = [ 'RASPI_HOSTAPD_CONFIG' => '/etc/hostapd/hostapd.conf', 'RASPI_DHCPCD_CONFIG' => '/etc/dhcpcd.conf', 'RASPI_DHCPCD_LOG' => '/var/log/dnsmasq.log', - 'RASPI_HOSTAPD_LOG' => '/tmp/hostapd.log', 'RASPI_WPA_SUPPLICANT_CONFIG' => '/etc/wpa_supplicant/wpa_supplicant.conf', 'RASPI_HOSTAPD_CTRL_INTERFACE' => '/var/run/hostapd', 'RASPI_WPA_CTRL_INTERFACE' => '/var/run/wpa_supplicant', diff --git a/includes/functions.php b/includes/functions.php index 38e972eb..d0970f3b 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -112,6 +112,9 @@ function getProviderValue($id, $key) if (!isset($obj['providers']) || !is_array($obj['providers'])) { return false; } + if ($id === null || !is_numeric($id)) { + return false; + } $id--; if (!isset($obj['providers'][$id]) || !is_array($obj['providers'][$id])) { return false; @@ -918,7 +921,7 @@ function renderStatus($hostapd_led, $hostapd_status, $memused_led, $memused, $cp
-
Status
+
diff --git a/includes/hostapd.php b/includes/hostapd.php index 48066769..58b2d9fc 100755 --- a/includes/hostapd.php +++ b/includes/hostapd.php @@ -16,6 +16,7 @@ $wifi->getWifiInterface(); */ function DisplayHostAPDConfig() { + $reg_domain = 'GB'; $hostapd = new HostapdManager(); $hotspot = new HotspotService(); $status = new StatusMessage(); @@ -30,18 +31,24 @@ function DisplayHostAPDConfig() $arr80211w = $hotspot->get80211wOptions(); $languageCode = strtok($_SESSION['locale'], '_'); $countryCodes = getCountryCodes($languageCode); - $reg_domain = $hotspot->getRegDomain(); $interfaces = $hotspot->getInterfaces(); $arrTxPower = getDefaultNetOpts('txpower','dbm'); $managedModeEnabled = false; + try { + $reg_domain = $hotspot->getRegDomain(); + } catch (RuntimeException $e) { + error_log('Failed to get regulatory domain: ' . $e->getMessage()); + } if (isset($_POST['interface'])) { $interface = $_POST['interface']; } else { $interface = $_SESSION['ap_interface']; } + $txpower = $hotspot->getTxPower($interface); $arrHostapdConf = $hotspot->getHostapdIni(); + $logOutput = []; if (!RASPI_MONITOR_ENABLED) { if (isset($_POST['StartHotspot']) || isset($_POST['RestartHotspot'])) { @@ -72,6 +79,10 @@ function DisplayHostAPDConfig() $reg_domain, $status ); + + // reload hostapi.ini + $arrHostapdConf = $hotspot->getHostapdIni(); + } elseif (isset($_POST['StopHotspot'])) { $status->addMessage('Attempting to stop hotspot', 'info'); exec('sudo /bin/systemctl stop hostapd.service', $return); @@ -130,15 +141,21 @@ function DisplayHostAPDConfig() } } + // fetch hostapd logs if enabled + if ((string)$arrHostapdConf['LogEnable'] === "1") { + $logResult = $hotspot->getHostapdLogs(5000); + if ($logResult['success']) { + $joined = implode("\n", $logResult['logs']); + $limited = getLogLimited('', $joined); + $logOutput = explode("\n", $limited); + } + } + // assign disassoc_low_ack boolean if value is set $arrConfig['disassoc_low_ack_bool'] = isset($arrConfig['disassoc_low_ack']) ? 1 : 0; $hostapdstatus = $system->hostapdStatus(); $serviceStatus = $hostapdstatus[0] == 0 ? "down" : "up"; - // ensure log is writeable - exec('sudo /bin/chmod o+r '.RASPI_HOSTAPD_LOG); - $logdata = getLogLimited(RASPI_HOSTAPD_LOG); - echo renderTemplate( "hostapd", compact( "status", @@ -156,7 +173,7 @@ function DisplayHostAPDConfig() "arrHostapdConf", "operatingSystem", "countryCodes", - "logdata" + "logOutput" ) ); } diff --git a/includes/locale.php b/includes/locale.php index db2fd3f1..4e61d0b9 100755 --- a/includes/locale.php +++ b/includes/locale.php @@ -1,133 +1,41 @@ initializeAndApply(); +/** + * Get all available locales + * + * @return array Associative array of locale codes to language names + */ function getLocales(): array { - return [ - 'en_GB.UTF-8' => 'English', - 'cs_CZ.UTF-8' => 'Čeština', - 'zh_TW.UTF-8' => '正體中文 (Chinese traditional)', - 'zh_CN.UTF-8' => '简体中文 (Chinese simplified)', - 'da_DK.UTF-8' => 'Dansk', - 'de_DE.UTF-8' => 'Deutsch', - 'es_MX.UTF-8' => 'Español', - 'fi_FI.UTF-8' => 'Finnish', - 'fr_FR.UTF-8' => 'Français', - 'el_GR.UTF-8' => 'Ελληνικά', - 'id_ID.UTF-8' => 'Indonesian', - 'it_IT.UTF-8' => 'Italiano', - 'ja_JP.UTF-8' => '日本語 (Japanese)', - 'ko_KR.UTF-8' => '한국어 (Korean)', - 'nl_NL.UTF-8' => 'Nederlands', - 'pl_PL.UTF-8' => 'Polskie', - 'pt_BR.UTF-8' => 'Português', - 'ru_RU.UTF-8' => 'Русский', - 'ro_RO.UTF-8' => 'Română', - 'sk_SK.UTF-8' => 'Slovenčina', - 'sv_SE.UTF-8' => 'Svenska', - 'tr_TR.UTF-8' => 'Türkçe', - 'vi_VN.UTF-8' => 'Tiếng Việt (Vietnamese)' - ]; + static $localeManager = null; + if ($localeManager === null) { + $localeManager = new LocaleManager(); + } + return $localeManager->getLocales(); } +/** + * Detect browser locale from Accept-Language header + * + * @return string Detected locale code + */ function detectBrowserLocale(): string { - if (empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) || strlen($_SERVER['HTTP_ACCEPT_LANGUAGE']) < 2) { - return 'en_GB.UTF-8'; - } - - $acceptLang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; - $lang = strtolower(substr($acceptLang, 0, 2)); - - if ($lang === 'zh' && strpos($acceptLang, 'zh-TW') === 0) { - return 'zh_TW.UTF-8'; - } - - switch ($lang) { - case 'de': - return 'de_DE.UTF-8'; - case 'fr': - return 'fr_FR.UTF-8'; - case 'it': - return 'it_IT.UTF-8'; - case 'pt': - return 'pt_BR.UTF-8'; - case 'sv': - return 'sv_SE.UTF-8'; - case 'nl': - return 'nl_NL.UTF-8'; - case 'zh': - return 'zh_CN.UTF-8'; - case 'cs': - return 'cs_CZ.UTF-8'; - case 'ru': - return 'ru_RU.UTF-8'; - case 'es': - return 'es_MX.UTF-8'; - case 'fi': - return 'fi_FI.UTF-8'; - case 'da': - return 'da_DK.UTF-8'; - case 'tr': - return 'tr_TR.UTF-8'; - case 'id': - return 'id_ID.UTF-8'; - case 'ko': - return 'ko_KR.UTF-8'; - case 'ja': - return 'ja_JP.UTF-8'; - case 'vi': - return 'vi_VN.UTF-8'; - case 'el': - return 'el_GR.UTF-8'; - case 'pl': - return 'pl_PL.UTF-8'; - case 'sk': - return 'sk_SK.UTF-8'; - default: - return 'en_GB.UTF-8'; + static $localeManager = null; + if ($localeManager === null) { + $localeManager = new LocaleManager(); } + return $localeManager->detectBrowserLocale(); } diff --git a/index.php b/index.php index 0b88a5f7..95e161ef 100755 --- a/index.php +++ b/index.php @@ -14,7 +14,7 @@ * @author Lawrence Yau * @author Bill Zimmerman * @license GNU General Public License, version 3 (GPL-3.0) - * @version 3.4.5 + * @version 3.5.1 * @link https://github.com/RaspAP/raspap-webgui/ * @link https://raspap.com/ * @see http://sirlagz.net/2013/02/08/raspap-webgui/ diff --git a/installers/common.sh b/installers/common.sh old mode 100755 new mode 100644 index bd389178..a48e1082 --- a/installers/common.sh +++ b/installers/common.sh @@ -158,7 +158,7 @@ function _get_linux_distro() { # Sets php package option based on Linux version, abort if unsupported distro function _set_php_package() { case $RELEASE in - 13) # Debian 13 trixie + 13|2025.*) # Debian 13 trixie, Kali Linux 2025 php_package="php8.4-fpm" phpiniconf="/etc/php/8.4/fpm/php.ini" ;; 23.05|12*) # Debian 12 & Armbian 23.05 @@ -246,7 +246,7 @@ function _install_dependencies() { else echo "${php_package} will be installed from the main deb sources list" fi - if [ ${OS,,} = "debian" ] || [ ${OS,,} = "ubuntu" ]; then + if [ ${OS,,} = "debian" ] || [ ${OS,,} = "ubuntu" ] || [ ${OS,,} = "kali" ]; then dhcpcd_package="dhcpcd5" iw_package="iw" rsync_package="rsync" @@ -287,9 +287,10 @@ function _install_dependencies() { if [[ "$php_package" == *"-fpm" ]]; then _install_log "Enabling lighttpd fastcgi-php-fpm module for $php_package" - sudo lighty-enable-mod fastcgi-php-fpm || _install_status 1 "Unable to enable fastcgi-php-fpm module" + sudo lighty-enable-mod fastcgi-php-fpm 2>&1 | grep -qE "already enabled" || \ + _install_status 1 "Unable to enable fastcgi-php-fpm module" + sudo systemctl restart $php_package.service || _install_status 1 "Unable to restart $php_package.service" fi - _install_status 0 } @@ -324,9 +325,6 @@ function _create_hostapd_scripts() { _install_log "Creating hostapd logging & control scripts" sudo mkdir $raspap_dir/hostapd || _install_status 1 "Unable to create directory '$raspap_dir/hostapd'" - # Copy logging shell scripts - sudo cp "$webroot_dir/installers/"enablelog.sh "$raspap_dir/hostapd" || _install_status 1 "Unable to move logging scripts" - sudo cp "$webroot_dir/installers/"disablelog.sh "$raspap_dir/hostapd" || _install_status 1 "Unable to move logging scripts" # Copy service control shell scripts sudo cp "$webroot_dir/installers/"servicestart.sh "$raspap_dir/hostapd" || _install_status 1 "Unable to move service control scripts" # Change ownership and permissions of hostapd control scripts @@ -426,7 +424,28 @@ function _prompt_install_feature() { else $function fi + elif [ "$opt" == "pv_option" ]; then + local opt_value=${!opt:-0} + if [ "$opt_value" == 0 ]; then + echo "(Skipped)" + else + local valid_ids=($(jq -r '.providers[].id' "$webroot_dir/config/vpn-providers.json")) + local found=0 + for id in "${valid_ids[@]}"; do + if [ "$id" == "$opt_value" ]; then + found=1 + break + fi + done + if [ $found == 1 ]; then + echo -e + $function + else + _install_status 1 "Invalid VPN provider ID $opt_value - (Skipped)" + fi + fi elif [ "${!opt}" == 1 ]; then + echo -e $function else echo "(Skipped)" @@ -641,18 +660,36 @@ function _download_latest_files() { if [ -d "$webroot_dir" ] && [ "$update" == 0 ]; then sudo mv $webroot_dir "$webroot_dir.`date +%F-%R`" || _install_status 1 "Unable to move existing webroot directory" elif [ "$upgrade" == 1 ] || [ "$update" == 1 ]; then - exclude='--exclude=ajax/system/sys_read_logfile.php' - shopt -s extglob - sudo find "$webroot_dir" ! -path "${webroot_dir}/ajax/system/sys_read_logfile.php" -delete 2>/dev/null + # Preserve user plugins temporarily + if [ -d "$webroot_dir/plugins" ]; then + sudo cp -r "$webroot_dir/plugins" "/tmp/raspap-user-plugins" + fi + + sudo find "$webroot_dir" -mindepth 1 \ + ! -path "${webroot_dir}/ajax/system/sys_read_logfile.php" \ + ! -path "${webroot_dir}/plugins" \ + ! -path "${webroot_dir}/plugins/*" \ + -delete 2>/dev/null + + # Remove plugins to permit clean rsync + sudo rm -rf "$webroot_dir/plugins" fi _install_log "Installing application to $webroot_dir" sudo rsync -av $exclude "$source_dir"/ "$webroot_dir"/ >/dev/null 2>&1 || _install_status 1 "Unable to install files to $webroot_dir" + # Restore user plugins after rsync + if [ "$upgrade" == 1 ] || [ "$update" == 1 ]; then + if [ -d "/tmp/raspap-user-plugins" ]; then + sudo find /tmp/raspap-user-plugins -mindepth 1 -maxdepth 1 -type d -exec cp -r {} "$webroot_dir/plugins/" \; 2>/dev/null + sudo rm -rf "/tmp/raspap-user-plugins" + fi + fi + if [ "$update" == 1 ]; then _install_log "Applying existing configuration to ${webroot_dir}/includes" sudo mv /tmp/config.php $webroot_dir/includes || _install_status 1 "Unable to move config.php to ${webroot_dir}/includes" - + if [ -f /tmp/raspap.auth ]; then _install_log "Applying existing authentication file to ${raspap_dir}" sudo mv /tmp/raspap.auth $raspap_dir || _install_status 1 "Unable to restore authentification credentials file to ${raspap_dir}" @@ -820,8 +857,8 @@ function _configure_networking() { "-A POSTROUTING -s 192.168.50.0/24 ! -d 192.168.50.0/24 -j MASQUERADE" ) for rule in "${rules[@]}"; do - if grep -- "$rule" $rulesv4 > /dev/null; then - echo "Rule already exits: ${rule}" + if sudo grep -- "$rule" $rulesv4 > /dev/null; then + echo "Rule already exists: ${rule}" else rule=$(sed -e 's/^\(-A POSTROUTING\)/-t nat \1/' <<< $rule) echo "Adding rule: ${rule}" diff --git a/installers/disablelog.sh b/installers/disablelog.sh deleted file mode 100755 index 4272b88f..00000000 --- a/installers/disablelog.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -/bin/sed -i 's|DAEMON_OPTS=" -f /tmp/hostapd.log"|#DAEMON_OPTS=""|' /etc/default/hostapd - diff --git a/installers/enablelog.sh b/installers/enablelog.sh deleted file mode 100755 index 84a714b8..00000000 --- a/installers/enablelog.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -/bin/sed -i 's|#DAEMON_OPTS=""|DAEMON_OPTS=" -f /tmp/hostapd.log"|' /etc/default/hostapd -touch /tmp/hostapd.log diff --git a/installers/raspap.sudoers b/installers/raspap.sudoers index b7a8a589..7a5ef202 100644 --- a/installers/raspap.sudoers +++ b/installers/raspap.sudoers @@ -9,14 +9,16 @@ www-data ALL=(ALL) NOPASSWD:/sbin/wpa_supplicant -i [a-zA-Z0-9]* -c /etc/wpa_sup www-data ALL=(ALL) NOPASSWD:/bin/rm /var/run/wpa_supplicant/[a-zA-Z0-9]* www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* scan_results www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* scan +www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* status www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* reconfigure www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* add_network www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* list_networks -www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i enable_network [0-9] -www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i disconnect [0-9] +www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* enable_network [0-9] +www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* disconnect [0-9] www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* select_network [0-9] www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* set_network [0-9] * www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* remove_network [0-9] +www-data ALL=(ALL) NOPASSWD:/bin/rm -f /var/run/wpa_supplicant/wlan[0-9] www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf www-data ALL=(ALL) NOPASSWD:/bin/systemctl start hostapd.service www-data ALL=(ALL) NOPASSWD:/bin/systemctl stop hostapd.service @@ -47,6 +49,7 @@ www-data ALL=(ALL) NOPASSWD:/sbin/ip -s a f label wl* www-data ALL=(ALL) NOPASSWD:/sbin/ifup * www-data ALL=(ALL) NOPASSWD:/sbin/ifdown * www-data ALL=(ALL) NOPASSWD:/sbin/iw dev* +www-data ALL=(ALL) NOPASSWD:/sbin/iw reg set* www-data ALL=(ALL) NOPASSWD:/bin/cp /etc/raspap/networking/dhcpcd.conf /etc/dhcpcd.conf www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/enablelog.sh www-data ALL=(ALL) NOPASSWD:/etc/raspap/hostapd/disablelog.sh @@ -90,3 +93,4 @@ www-data ALL=(ALL) NOPASSWD:/etc/raspap/plugins/plugin_helper.sh www-data ALL=(ALL) NOPASSWD:/bin/systemctl start raspap-network-activity@*.service www-data ALL=(ALL) NOPASSWD:/bin/systemctl stop raspap-network-activity@*.service www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wpa_conf_* /etc/wpa_supplicant/wpa_supplicant.conf +www-data ALL=(ALL) NOPASSWD:/usr/bin/journalctl -u hostapd.service * diff --git a/installers/raspbian.sh b/installers/raspbian.sh index fe368670..2b196bbd 100755 --- a/installers/raspbian.sh +++ b/installers/raspbian.sh @@ -106,6 +106,7 @@ function _parse_params() { restapi_option=1 adblock_option=1 wg_option=1 + pv_option=0 insiders=0 ssh=0 minwrite=0 diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo index 059c9553..1ae9187d 100644 Binary files a/locale/de_DE/LC_MESSAGES/messages.mo and b/locale/de_DE/LC_MESSAGES/messages.mo differ diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po index 351e000a..f6adaa97 100644 --- a/locale/de_DE/LC_MESSAGES/messages.po +++ b/locale/de_DE/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2025-10-21 06:26\n" +"PO-Revision-Date: 2025-11-20 12:20\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: German\n" "Language: de_DE\n" @@ -33,9 +33,15 @@ msgstr "Übersicht" msgid "WiFi client" msgstr "WLAN Client" +msgid "Status" +msgstr "Status" + msgid "Hotspot" msgstr "Hotspot" +msgid "Logging" +msgstr "Protokollierung" + msgid "Mem Use" msgstr "RAM Nutzung" @@ -116,7 +122,7 @@ msgid "Click or tap to upload a new user avatar." msgstr "Klicken oder tippen, um einen neuen Avatar hochzuladen." msgid "Image files of type JPG, GIF or PNG are accepted. Max file size: 2 MB." -msgstr "" +msgstr "Bilddateien vom Typ JPG, GIF oder PNG werden akzeptiert. Maximale Dateigröße: 2 MB." msgid "Reset avatar" msgstr "Profilbild zurücksetzen" @@ -222,7 +228,7 @@ msgid "No Wifi stations found" msgstr "Keine WLAN-Sender gefunden" msgid "Reinitialized wpa_supplicant. Choose Rescan." -msgstr "" +msgstr "wpa_supplicant neu initialisiert. Wählen Sie Aktualisieren." msgid "Click 'Rescan' to search for nearby Wifi stations." msgstr "Auf „Rescan“ klicken, um nach WLAN-Sendern in der Nähe zu suchen." @@ -355,7 +361,7 @@ msgid "Cellular" msgstr "Mobile Daten" msgid "AP" -msgstr "Access Point" +msgstr "AP" msgid "Bridged" msgstr "Brücken" @@ -439,6 +445,24 @@ msgstr "Vielen Dank, dass Sie ein Insider sind" msgid "DHCP server settings" msgstr "DHCP-Servereinstellungen" +msgid "Default gateway" +msgstr "Standard-Gateway" + +msgid "Install a default route for this interface" +msgstr "Eine Standardroute für diese Schnittstelle installieren" + +msgid "Static IP options" +msgstr "Statische IP-Optionen" + +msgid "DHCP options" +msgstr "DHCP-Optionen" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Aktivieren Sie diese Option, wenn Sie möchten, dass RaspAP den Clients an der ausgewählten Schnittstelle IP-Adressen zuweist. Eine statische IP-Adresse ist für diese Option erforderlich." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Aktivieren Sie dies nur, wenn Ihr Gerät diese Schnittstelle als primäre Route zum Internet verwenden soll." + msgid "Client list" msgstr "Client Liste" @@ -575,10 +599,10 @@ msgid "This option adds dhcp-host entries to the dnsmasq configurat msgstr "Diese Option fügt dhcp-host-Einträge zur dnsmasq-Konfiguration hinzu." msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." -msgstr "" +msgstr "Dies schaltet die Option gateway/nogateway für diese Schnittstelle in der dhcpcd.conf-Datei um." msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." -msgstr "" +msgstr "Dies schaltet die Option nohook wpa_supplicant für diese Schnittstelle in der dhcpcd.conf-Datei um." msgid "Disable wpa_supplicant dhcp hook for this interface" msgstr "Deaktiviere wpa_supplicant dhcp Hook für diese Schnittstelle" @@ -719,6 +743,27 @@ msgstr "Aktiviere Protokoll" msgid "Logfile output" msgstr "Logfile Ausgabe" +msgid "Log level" +msgstr "Log-Stufe" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "Höhere Stufen reduzieren die Ausführlichkeit des Protokolls. Informational wird empfohlen." + +msgid "Verbose debugging" +msgstr "Ausführliche Fehlersuche" + +msgid "Debugging" +msgstr "Fehlersuche" + +msgid "Informational" +msgstr "Informativ" + +msgid "Notification" +msgstr "Benachrichtigung" + +msgid "Warning" +msgstr "Warnung" + msgid "WiFi client AP mode" msgstr "AP-Modus von WiFI-Client" @@ -729,7 +774,7 @@ msgid "WiFi repeater mode" msgstr "WLAN-Verstärker Modus" msgid "Dual band AP mode" -msgstr "" +msgstr "Dual-Band-AP-Modus" msgid "Hide SSID in broadcast" msgstr "SSID in der Übertragung ausblenden" @@ -921,8 +966,11 @@ msgstr "DNS-Server wechseln" msgid "Adapter IP Address Settings" msgstr "IP-Adressen Einstellungen für Adapter" -msgid "Enable Fallback to Static Option" -msgstr "Aktiviere Fallback zur Statischen Option" +msgid "Enable fallback to static option" +msgstr "Fallback auf statische Option aktivieren" + +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Aktivieren Sie dies nur, wenn Ihr Gerät diese Schnittstelle als primäre Route zum Internet verwenden soll." msgid "Static IP" msgstr "Statische IP" @@ -1078,7 +1126,7 @@ msgid "Attempting to disable routing between %s and %s interfaces" msgstr "Versuche Routing zwischen den Schnittstellen %s und %s zu deaktivieren" msgid "No default DHCP configuration exists for the %s interface" -msgstr "Keine Standard-DHCP-Konfiguration für die Schnittstelle %s vorhanden" +msgstr "" msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" msgstr "Konfigurieren Sie eine statische IP und DHCP für diese Schnittstelle in den DHCP-Server-Einstellungen" @@ -1135,6 +1183,9 @@ msgstr "Genutzter Speicher" msgid "CPU Load" msgstr "CPU-Auslastung" +msgid "CPU Temp" +msgstr "CPU Temp" + msgid "Reboot" msgstr "Neustarten" @@ -1223,7 +1274,7 @@ msgid "System tools" msgstr "Systemwerkzeuge" msgid "To generate a system debug log, click or tap the button below." -msgstr "Um ein System-Debug-Protokoll zu erstellen, klicken oder tippen Sie auf die Schaltfläche unten." +msgstr "." msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." msgstr "Debug-Protokollinformationen enthalten die RaspAP-Version, den aktuellen Status und die Konfiguration von AP-bezogenen Diensten, installierte Systempakete, Linux-Kernel-Version und Netzwerkdetails. Keine Passwörter oder andere sensible Daten sind enthalten." @@ -1240,6 +1291,9 @@ msgstr "Größenbeschränkung für Diagnoseprotokoll (KB)" msgid "Changing log limit size to %s KB" msgstr "Protokollgrößenbeschränkung wird auf %s KB geändert" +msgid "Information provided by raspap.sysinfo" +msgstr "Informationen von raspap.sysinfo" + msgid "The following user plugins are available to extend RaspAP's functionality." msgstr "Die folgenden Benutzer-Plugins sind verfügbar, um die Funktionalität von RaspAP zu erweitern." @@ -1291,14 +1345,17 @@ msgstr "Konfigurationsdateien" msgid "Dependencies" msgstr "Abhängigkeiten" +msgid "Permissions" +msgstr "Berechtigungen" + msgid "Non-privileged users" -msgstr "Benutzer ohne Privilegien" +msgstr "Nicht-privilegierte Benutzer" msgid "Install now" -msgstr "Jetzt installieren" +msgstr "Installation beginnen" msgid "Installing plugin" -msgstr "Plugin wird installiert" +msgstr "Plugin installieren" msgid "Plugin installation in progress..." msgstr "Plugin-Installation läuft..." @@ -1339,6 +1396,9 @@ msgstr "Adapter-Zustandsprüfung" msgid "Inspect adapters" msgstr "Adapter überprüfen" +msgid "Theme" +msgstr "Thema" + #: includes/data_usage.php msgid "Data usage" msgstr "Datennutzung" @@ -1825,7 +1885,7 @@ msgid "Enable Firewall" msgstr "Firewall aktivieren" msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." -msgstr "" +msgstr "Das Ändern des Firewall-Status kann eingehenden Verkehr unterbrechen oder zulassen. Wählen Sie Fortfahren, um fortzufahren." msgid "Proceed" msgstr "Fortfahren" @@ -1840,7 +1900,7 @@ msgid "Service provider" msgstr "Dienstanbieter" msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." -msgstr "" +msgstr "Wählen Sie einen von ddclient unterstützten Dynamic-DNS-Dienst aus der Liste unten aus. Durch Auswahl eines bekannten Dienstanbieters werden die Felder protocol und server ausgefüllt. Sie können den Dienst auch manuell konfigurieren." msgid "Method to obtain IP" msgstr "Methode zum Abrufen der IP" @@ -1908,6 +1968,15 @@ msgstr "Dynamisches DNS stoppen" msgid "Restart Dynamic DNS" msgstr "Dynamisches DNS neu starten" +msgid "Account details" +msgstr "Kontodetails" + +msgid "My account" +msgstr "Mein Benutzerkonto" + +msgid "Server location" +msgstr "Server-Standort" + msgid "Choosing Save settings will connect to the selected country." msgstr "Durch Auswahl von Einstellungen speichern wird eine Verbindung zum ausgewählten Land hergestellt." @@ -1923,6 +1992,15 @@ msgstr "Wählen Sie ein Land..." msgid "Account information not available from %s's Linux CLI." msgstr "Kontoinformationen sind über die Linux-CLI von %s nicht verfügbar." +msgid "Attempting to connect to %s" +msgstr "Versuche mit %s zu verbinden" + +msgid "Attempting to connect VPN provider" +msgstr "Versuche VPN-Anbieter zu verbinden" + +msgid "Attempting to disconnect VPN provider" +msgstr "Versuche VPN-Anbieter zu trennen" + msgid "Expected %s binary not found at: %s" msgstr "Erwartete %s-Binärdatei nicht gefunden unter: %s" @@ -2016,6 +2094,27 @@ msgstr "Update abgeschlossen" msgid "An error occurred. Check the log at /tmp/raspap_install.log" msgstr "Ein Fehler ist aufgetreten. Überprüfen Sie das Protokoll unter /tmp/raspap_install.log" +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP ist eine gemeinsame Kreation von %1$s und %2$s mit den Beiträgen unserer %3$s und %4$s. Erfahren Sie mehr darüber, wie Sie dem Projekt als %5$s, %6$s oder %7$s beitreten können, und erhalten Sie sofortigen Zugang zu %8$s, der für %9$sverfügbar ist." + +msgid "developer community" +msgstr "Entwickler Community" + +msgid "language translators" +msgstr "Sprachübersetzer" + +msgid "code contributor" +msgstr "Code-Beitragender" + +msgid "translator" +msgstr "Übersetzer" + +msgid "financial sponsor" +msgstr "Finanzieller Sponsor" + +msgid "exclusive features" +msgstr "Exklusive Funktionen" + msgid "RaspAP Exception" msgstr "RaspAP-Ausnahme" @@ -2112,8 +2211,8 @@ msgstr "Öffentliche NTP-Server, die Network Time Security (NTS) unterstützen, msgid "Examples of valid server entries include %s, %s and %s." msgstr "Beispiele für gültige Servereinträge sind %s, %s und %s." -msgid "Current ntpq peer status is displayed below. An asterisk () indicates the preferred server." -msgstr "Der aktuelle Status von ntpq peer wird unten angezeigt. Ein Sternchen () kennzeichnet den bevorzugten Server." +msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." +msgstr "Der aktuelle Status von ntpq peer wird unten angezeigt. Ein Sternchen (*) kennzeichnet den bevorzugten Server." msgid "NTP configuration cannot be empty" msgstr "NTP-Konfiguration darf nicht leer sein" @@ -2517,8 +2616,8 @@ msgstr "Das Ändern des Portaldienstes wird den Client-Verkehr kurzzeitig unterb msgid "Interface to be managed by the portal" msgstr "Vom Portal zu verwaltende Schnittstelle" -msgid "Name of your gateway (available as $gatewayname variable)" -msgstr "Name Ihres Gateways (verfügbar als $gatewayname Variable)" +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "Name Ihres Gateways (verfügbar als \\\\$gatewayname Variable)" msgid "IP address of the router. Leave empty for auto-detection" msgstr "IP-Adresse des Routers. Leer lassen für automatische Erkennung" @@ -2636,3 +2735,4 @@ msgstr "Portal-Status" msgid "Current nodogsplash status is displayed below." msgstr "Der aktuelle nodogsplash-Status wird unten angezeigt." + diff --git a/locale/en_US/LC_MESSAGES/messages.mo b/locale/en_US/LC_MESSAGES/messages.mo index 0dce93ca..58e9c5be 100644 Binary files a/locale/en_US/LC_MESSAGES/messages.mo and b/locale/en_US/LC_MESSAGES/messages.mo differ diff --git a/locale/en_US/LC_MESSAGES/messages.po b/locale/en_US/LC_MESSAGES/messages.po index f23c29f8..23e307aa 100644 --- a/locale/en_US/LC_MESSAGES/messages.po +++ b/locale/en_US/LC_MESSAGES/messages.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: 1.2.1\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2025-10-20 08:35+0000\n" +"PO-Revision-Date: 2025-10-25 08:35+0000\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: \n" "Language: en_US\n" @@ -34,9 +34,15 @@ msgstr "Dashboard" msgid "WiFi client" msgstr "WiFi client" +msgid "Status" +msgstr "Status" + msgid "Hotspot" msgstr "Hotspot" +msgid "Logging" +msgstr "Logging" + msgid "Mem Use" msgstr "Mem Use" @@ -440,6 +446,24 @@ msgstr "Thanks for being an Insider" msgid "DHCP server settings" msgstr "DHCP server settings" +msgid "Default gateway" +msgstr "Default gateway" + +msgid "Install a default route for this interface" +msgstr "Install a default route for this interface" + +msgid "Static IP options" +msgstr "Static IP options" + +msgid "DHCP options" +msgstr "DHCP options" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Enable this only if you want your device to use this interface as its primary route to the internet." + msgid "Client list" msgstr "Client list" @@ -720,6 +744,27 @@ msgstr "Enable logging" msgid "Logfile output" msgstr "Logfile output" +msgid "Log level" +msgstr "Log level" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "Higher levels reduce log verbosity. Informational is recommended." + +msgid "Verbose debugging" +msgstr "Verbose debugging" + +msgid "Debugging" +msgstr "Debugging" + +msgid "Informational" +msgstr "Informational" + +msgid "Notification" +msgstr "Notification" + +msgid "Warning" +msgstr "Warning" + msgid "WiFi client AP mode" msgstr "WiFi client AP mode" @@ -922,8 +967,11 @@ msgstr "Alternate DNS Server" msgid "Adapter IP Address Settings" msgstr "Adapter IP Address Settings" -msgid "Enable Fallback to Static Option" -msgstr "Enable Fallback to Static Option" +msgid "Enable fallback to static option" +msgstr "Enable fallback to static option" + +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Enable this option to configure a static profile and fall back to it when DHCP lease fails." msgid "Static IP" msgstr "Static IP" @@ -1136,6 +1184,9 @@ msgstr "Storage Used" msgid "CPU Load" msgstr "CPU Load" +msgid "CPU Temp" +msgstr "CPU Temp" + msgid "Reboot" msgstr "Reboot" @@ -1346,6 +1397,9 @@ msgstr "Adapter health check" msgid "Inspect adapters" msgstr "Inspect adapters" +msgid "Theme" +msgstr "Theme" + #: includes/data_usage.php msgid "Data usage" msgstr "Data usage" @@ -2053,6 +2107,27 @@ msgstr "Update complete" msgid "An error occurred. Check the log at /tmp/raspap_install.log" msgstr "An error occurred. Check the log at /tmp/raspap_install.log" +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." + +msgid "developer community" +msgstr "developer community" + +msgid "language translators" +msgstr "language translators" + +msgid "code contributor" +msgstr "code contributor" + +msgid "translator" +msgstr "translator" + +msgid "financial sponsor" +msgstr "financial sponsor" + +msgid "exclusive features" +msgstr "exclusive features" + #: includes/exceptions.php msgid "RaspAP Exception" diff --git a/locale/es_MX/LC_MESSAGES/messages.mo b/locale/es_MX/LC_MESSAGES/messages.mo index 6509e0ed..2c5225b4 100644 Binary files a/locale/es_MX/LC_MESSAGES/messages.mo and b/locale/es_MX/LC_MESSAGES/messages.mo differ diff --git a/locale/es_MX/LC_MESSAGES/messages.po b/locale/es_MX/LC_MESSAGES/messages.po index 8dbf2e01..6721d9e7 100644 --- a/locale/es_MX/LC_MESSAGES/messages.po +++ b/locale/es_MX/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2025-07-03 05:44\n" +"PO-Revision-Date: 2025-11-20 12:21\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -25,7 +25,7 @@ msgid "Toggle navigation" msgstr "Interrutor de navegacion" msgid "RaspAP Admin Panel" -msgstr "" +msgstr "Panel de Administración RaspAP" msgid "Dashboard" msgstr "Tablero" @@ -33,9 +33,15 @@ msgstr "Tablero" msgid "WiFi client" msgstr "Cliente wiFi" +msgid "Status" +msgstr "Estado" + msgid "Hotspot" msgstr "Punto de acceso" +msgid "Logging" +msgstr "Registro" + msgid "Mem Use" msgstr "Uso de mem" @@ -57,9 +63,6 @@ msgstr "Proxy TOR" msgid "Authentication" msgstr "Autentificacion" -msgid "Change Theme" -msgstr "Cambiar tema" - msgid "System" msgstr "Sistema" @@ -101,7 +104,7 @@ msgid "Please provide a valid username." msgstr "Proporcione un nombre de usuario válido." msgid "Please provide a valid password." -msgstr "" +msgstr "Por favor proporciona una contraseña válida." msgid "Please enter your old password." msgstr "Por favor, introduzca tu contraseña antigua." @@ -113,52 +116,52 @@ msgid "Please re-enter your new password." msgstr "Por favor vuelva a introducir tu nueva contraseña." msgid "Avatar" -msgstr "" +msgstr "Avatar" msgid "Click or tap to upload a new user avatar." -msgstr "" +msgstr "Haz clic o toca para subir un nuevo avatar de usuario." msgid "Image files of type JPG, GIF or PNG are accepted. Max file size: 2 MB." -msgstr "" +msgstr "Se aceptan archivos de imagen de tipo JPG, GIF o PNG. Tamaño máximo: 2 MB." msgid "Reset avatar" -msgstr "" +msgstr "Restablecer avatar" msgid "Enable limited privilege user" -msgstr "" +msgstr "Habilitar usuario con privilegios limitados" msgid "This option enables a non-admin user who can access RaspAP's management interface, but has limited ability to modify the existing configuration. This user becomes active when the current admin user is logged-out." -msgstr "" +msgstr "Esta opción habilita un usuario no administrador que puede acceder a la interfaz de administración de RaspAP, pero tiene capacidad limitada para modificar la configuración existente. Este usuario se activa cuando el usuario administrador actual cierra sesión." msgid "Admin login failed. Please try again." -msgstr "" +msgstr "Error de inicio de sesión de administrador. Por favor intenta de nuevo." msgid "Limited privilege user mode enabled" -msgstr "" +msgstr "Modo de usuario con privilegios limitados habilitado" msgid "Failed to enable limited privilege user mode" -msgstr "" +msgstr "Error al habilitar el modo de usuario con privilegios limitados" msgid "Logout and enable limited user mode" -msgstr "" +msgstr "Cerrar sesión y habilitar modo de usuario limitado" msgid "Limited user login" -msgstr "" +msgstr "Inicio de sesión de usuario limitado" msgid "Limited user password" -msgstr "" +msgstr "Contraseña de usuario limitado" msgid "This action will save the limited user's credentials and logout the current admin user. Save and enable limited privilege mode?" -msgstr "" +msgstr "Esta acción guardará las credenciales del usuario limitado y cerrará la sesión del usuario administrador actual. ¿Guardar y habilitar el modo de privilegios limitados?" msgid "Save and logout" -msgstr "" +msgstr "Guardar y cerrar sesión" msgid "Admin credentials updated successfully" -msgstr "" +msgstr "Credenciales de administrador actualizadas exitosamente" msgid "Limited user credentials updated successfully" -msgstr "" +msgstr "Credenciales de usuario limitado actualizadas exitosamente" #: includes/configure_client.php msgid "Client settings" @@ -225,7 +228,7 @@ msgid "No Wifi stations found" msgstr "No se encontró ninguna WiFi" msgid "Reinitialized wpa_supplicant. Choose Rescan." -msgstr "" +msgstr "wpa_supplicant reinicializado. Selecciona Volver a escanear." msgid "Click 'Rescan' to search for nearby Wifi stations." msgstr "Pulse 'Reescanear' para buscar WiFi cercanas." @@ -295,7 +298,7 @@ msgid "Link Quality" msgstr "Calidad del Enlace" msgid "Information provided by raspap.system" -msgstr "" +msgstr "Información proporcionada por raspap.system" msgid "No MAC Address Found" msgstr "Dirección MAC no encontrada" @@ -334,7 +337,7 @@ msgid "Client: Ethernet cable" msgstr "Cliente: Cable Ethernet" msgid "Current status" -msgstr "" +msgstr "Estado actual" msgid "Ethernet" msgstr "Ethernet" @@ -349,42 +352,42 @@ msgid "WiFi" msgstr "Wi-Fi" msgid "Repeater" -msgstr "" +msgstr "Repetidor" msgid "Tethering" -msgstr "" +msgstr "Anclaje" msgid "Cellular" -msgstr "" +msgstr "Celular" msgid "AP" -msgstr "" +msgstr "Punto de acceso" msgid "Bridged" -msgstr "" +msgstr "Puente" msgid "Adblock" -msgstr "" +msgstr "Bloqueador de anuncios" msgid "VPN" -msgstr "" +msgstr "VPN" msgid "Netmask" -msgstr "" +msgstr "Máscara de red" msgid "5G" -msgstr "" +msgstr "5G" msgid "2.4G" -msgstr "" +msgstr "2,4G" msgid "%d WLAN %s" -msgstr "" +msgstr "%d WLAN %s" msgid "client" msgid_plural "clients" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "cliente" +msgstr[1] "clientes" msgid "Mobile Data Client" msgstr "Límite de datos móviles" @@ -416,9 +419,6 @@ msgstr "Calidad de señal" msgid "WAN IP" msgstr "WAN IP" -msgid "Web-GUI" -msgstr "Web-GUI" - msgid "Signal strength" msgstr "Intensidad de la señal" @@ -426,25 +426,43 @@ msgid "No Client device or not yet configured" msgstr "El dispositivo no se ha configurado aún." msgid "No Client device found" -msgstr "" +msgstr "No se encontró dispositivo cliente" #: includes/footer.php msgid "Created by the %s" -msgstr "" +msgstr "Creado por %s" msgid "RaspAP Team" -msgstr "" +msgstr "Equipo RaspAP" msgid "Get Insiders" -msgstr "" +msgstr "Obtener Insiders" msgid "Thanks for being an Insider" -msgstr "" +msgstr "Gracias por ser un Insider" #: includes/dhcp.php msgid "DHCP server settings" msgstr "Ajustes de servidor DHCP" +msgid "Default gateway" +msgstr "Puerta de enlace predeterminada" + +msgid "Install a default route for this interface" +msgstr "Instalar una ruta predeterminada para esta interfaz" + +msgid "Static IP options" +msgstr "Opciones de IP estática" + +msgid "DHCP options" +msgstr "Opciones de IP estática" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Habilite esta opción si desea que RaspAP asigne direcciones IP a los clientes en la interfaz seleccionada. Se requiere una dirección IP estática para esta opción." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Habilite esto solo si desea que su dispositivo use esta interfaz como su ruta principal a internet." + msgid "Client list" msgstr "Lista de Clientes" @@ -580,11 +598,11 @@ msgstr "Los clientes con una determinada dirección MAC hardware siempre pueden msgid "This option adds dhcp-host entries to the dnsmasq configuration." msgstr "Esta opción añade entradas dhcp-host a la configuración dnsmasq." -msgid "This toggles the gateway/nogateway option for this interface in the DHCPCD configuration." -msgstr "Esto activa la opción gateway/nogateway para esta interfaz en la configuración DHCPCD." +msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." +msgstr "Esto alterna la opción gateway/nogateway para esta interfaz en el archivo dhcpcd.conf." -msgid "This toggles the nohook wpa_supplicant option for this interface in the DHCPCD configuration." -msgstr "Esto activa la opción nohook wpa_supplicant para esta interfaz en la configuración DHCPCD." +msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." +msgstr "Esto alterna la opción nohook wpa_supplicant para esta interfaz en el archivo dhcpcd.conf." msgid "Disable wpa_supplicant dhcp hook for this interface" msgstr "Desactivar wpa_supplicant dhcp hook para esta interfaz" @@ -617,19 +635,19 @@ msgid "Invalid default gateway." msgstr "Pasarela predeterminada inválida." msgid "Invalid DHCP range start." -msgstr "" +msgstr "Inicio de rango DHCP inválido." msgid "Invalid DHCP range end." msgstr "Fin de rango DHCP inválido." msgid "Invalid DHCP lease time, not a number." -msgstr "" +msgstr "Tiempo de asignación DHCP inválido, no es un número." msgid "Unknown DHCP lease time unit." -msgstr "" +msgstr "Unidad de tiempo de asignación DHCP desconocida." msgid "Invalid metric value, not a number." -msgstr "" +msgstr "Valor de métrica inválido, no es un número." #: includes/hostapd.php msgid "Basic" @@ -654,7 +672,7 @@ msgid "Encryption Type" msgstr "Tipo de Encriptacion" msgid "Pre-shared key (PSK)" -msgstr "" +msgstr "Clave precompartida (PSK)" msgid "Advanced settings" msgstr "Configuracion Avanzada" @@ -690,25 +708,25 @@ msgid "Country code must be blank or two characters" msgstr "Codido de pais debe quedar en blanco o tener 2 caracteres" msgid "DHCP configuration for %s enabled." -msgstr "" +msgstr "Configuración DHCP para %s habilitada." msgid "DHCP configuration for %s added." -msgstr "" +msgstr "Configuración DHCP para %s agregada." msgid "DHCP configuration for %s updated." -msgstr "" +msgstr "Configuración DHCP para %s actualizada." msgid "Interface %s has no default settings." -msgstr "" +msgstr "La interfaz %s no tiene configuración predeterminada." msgid "Configure settings in DHCP Server before starting AP." -msgstr "" +msgstr "Configura los ajustes en Servidor DHCP antes de iniciar el punto de acceso." msgid "Wifi hotspot settings saved." -msgstr "" +msgstr "Configuración del punto de acceso WiFi guardada." msgid "Unable to save WiFi hotspot settings." -msgstr "" +msgstr "No se puede guardar la configuración del punto de acceso WiFi." msgid "Start hotspot" msgstr "Iniciar hotspot" @@ -725,6 +743,27 @@ msgstr "Habilitar registro" msgid "Logfile output" msgstr "Salida del archivo de registro" +msgid "Log level" +msgstr "Nivel de registro" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "Los niveles más altos reducen la verbosidad del registro. Se recomienda el nivel informativo." + +msgid "Verbose debugging" +msgstr "Depuración detallada" + +msgid "Debugging" +msgstr "Depuración" + +msgid "Informational" +msgstr "Información" + +msgid "Notification" +msgstr "Notificación" + +msgid "Warning" +msgstr "Advertencia" + msgid "WiFi client AP mode" msgstr "Modo AP de WiFi de cliente" @@ -732,7 +771,10 @@ msgid "Bridged AP mode" msgstr "Modo AP Bridged" msgid "WiFi repeater mode" -msgstr "" +msgstr "Modo repetidor WiFi" + +msgid "Dual band AP mode" +msgstr "Modo punto de acceso de doble banda" msgid "Hide SSID in broadcast" msgstr "Ocultar SSID en la transmisión" @@ -771,70 +813,139 @@ msgid "dBm is a unit of level used to indicate that a power ratio is expressed i msgstr "dBm es una unidad de nivel utilizada para indicar que una proporción de potencia se expresa en decibelios (dB) con referencia a un millwatio (mW). 30 dBm es igual a 1000 mW, mientras que 0 dBm es igual a 1,25 mW." msgid "WPA and WPA2" -msgstr "" +msgstr "WPA y WPA2" msgid "WPA2 and WPA3-Personal (transitional mode)" -msgstr "" +msgstr "WPA2 y WPA3-Personal (modo de transición)" msgid "WPA3-Personal (required)" -msgstr "" +msgstr "WPA3-Personal (requerido)" msgid "Enabled (for supported clients)" -msgstr "" +msgstr "Habilitado (para clientes compatibles)" msgid "Required (for supported clients)" -msgstr "" +msgstr "Requerido (para clientes compatibles)" msgid "802.11w extends strong cryptographic protection to a select set of robust management frames, including Deauthentication, Disassociation and certain categories of Action Management frames. Collectively, this is known as Management Frame Protection (MFP)." -msgstr "" +msgstr "802.11w extiende protección criptográfica fuerte a un conjunto selecto de tramas de administración robustas, incluyendo Desautenticación, Desasociación y ciertas categorías de tramas de Administración de Acciones. En conjunto, esto se conoce como Protección de Tramas de Administración (MFP)." msgid "Scan this QR code directly or %s %sprint a sign%s for your users." -msgstr "" +msgstr "Escanea este código QR directamente o %s %simprime un cartel%s para tus usuarios." msgid "Printable Wi-Fi sign" -msgstr "" +msgstr "Cartel WiFi imprimible" msgid "To connect with your phone or tablet, scan the QR code above with your camera app." -msgstr "" +msgstr "Para conectarte con tu teléfono o tableta, escanea el código QR de arriba con la aplicación de tu cámara." msgid "For other devices, use the login credentials below." -msgstr "" +msgstr "Para otros dispositivos, usa las credenciales de inicio de sesión de abajo." msgid "Network" -msgstr "" +msgstr "Red" msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only." -msgstr "" +msgstr "La interfaz seleccionada (%s) solo tiene soporte para la banda inalámbrica de 2.4 GHz." msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only." -msgstr "" +msgstr "La interfaz seleccionada (%s) solo tiene soporte para la banda inalámbrica de 2.5 GHz." msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands." -msgstr "" +msgstr "La interfaz seleccionada (%s) tiene soporte para las bandas inalámbricas de 2.4 y 5 GHz." msgid "The selected interface (%s) does not support wireless mode operation." -msgstr "" +msgstr "La interfaz seleccionada (%s) no soporta operación en modo inalámbrico." msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set." -msgstr "" +msgstr "La opción 802.11ac 5 GHz está deshabilitada hasta que se establezca un dominio regulatorio inalámbrico compatible." msgid "WiFi repeater mode: A metric value is already defined for DHCP." -msgstr "" +msgstr "Modo repetidor WiFi: Ya está definido un valor de métrica para DHCP." msgid "Restart hotspot to enable WiFi repeater mode." -msgstr "" +msgstr "Reinicia el punto de acceso para habilitar el modo repetidor WiFi." msgid "Unable to obtain metric value for client interface. Repeater mode inactive." -msgstr "" +msgstr "No se puede obtener el valor de métrica para la interfaz del cliente. Modo repetidor inactivo." msgid "Metric value configured for the %s interface." -msgstr "" +msgstr "Valor de métrica configurado para la interfaz %s." msgid "Parameter hiddenSSID contains invalid configuration value." -msgstr "" +msgstr "El parámetro hiddenSSID contiene un valor de configuración inválido." msgid "Parameter hiddenSSID is not a number." -msgstr "" +msgstr "El parámetro hiddenSSID no es un número." + +msgid "Bridge interface configuration" +msgstr "Configuración de interfaz puente" + +msgid "Configure a static IP address for the br0 interface to maintain connectivity during bridge mode activation." +msgstr "Configura una dirección IP estática para la interfaz br0 para mantener la conectividad durante la activación del modo puente." + +msgid "Static IP Address" +msgstr "Dirección IP estática" + +msgid "Netmask / CIDR" +msgstr "Máscara de red / CIDR" + +msgid "Example: 192.168.1.100" +msgstr "Ejemplo: 192.168.1.100" + +msgid "CIDR notation (e.g., 24 for 255.255.255.0)" +msgstr "Notación CIDR (ej., 24 para 255.255.255.0)" + +msgid "Gateway" +msgstr "Puerta de enlace" + +msgid "Your router's IP address" +msgstr "Dirección IP de tu router" + +msgid "Usually same as gateway" +msgstr "Generalmente igual que la puerta de enlace" + +msgid "Bridge static IP address must be a valid IPv4 address" +msgstr "La dirección IP estática del puente debe ser una dirección IPv4 válida" + +msgid "Bridge netmask must be a number between 1 and 32" +msgstr "La máscara de red del puente debe ser un número entre 1 y 32" + +msgid "Bridge netmask is required when using static IP" +msgstr "Se requiere la máscara de red del puente al usar IP estática" + +msgid "Bridge gateway must be a valid IPv4 address" +msgstr "La puerta de enlace del puente debe ser una dirección IPv4 válida" + +msgid "Bridge gateway is required when using static IP" +msgstr "Se requiere la puerta de enlace del puente al usar IP estática" + +msgid "Bridge DNS server must be a valid IPv4 address" +msgstr "El servidor DNS del puente debe ser una dirección IPv4 válida" + +msgid "Bridge DNS server is required when using static IP" +msgstr "Se requiere el servidor DNS del puente al usar IP estática" + +msgid "Bridge static IP and gateway must be in the same subnet" +msgstr "La IP estática del puente y la puerta de enlace deben estar en la misma subred" + +msgid "Please enter a valid IPv4 address" +msgstr "Por favor ingresa una dirección IPv4 válida" + +msgid "Please enter a valid netmask" +msgstr "Por favor ingresa una máscara de red válida" + +msgid "DHCP configuration for br0 enabled" +msgstr "Configuración DHCP para br0 habilitada" + +msgid "Unable to save WiFi hotspot settings due to validation errors" +msgstr "No se puede guardar la configuración del punto de acceso WiFi debido a errores de validación" + +msgid "Enable AP isolation" +msgstr "Habilitar aislamiento de punto de acceso" + +msgid "Blocks wireless clients from seeing or connecting to each other. Recommended for guest networks and public access points." +msgstr "Bloquea a los clientes inalámbricos para que no se vean o se conecten entre sí. Recomendado para redes de invitados y puntos de acceso públicos." #: includes/networking.php msgid "Summary" @@ -855,9 +966,12 @@ msgstr "Servidor DNS Alterno" msgid "Adapter IP Address Settings" msgstr "Configuracion de adaptador de dirección IP" -msgid "Enable Fallback to Static Option" +msgid "Enable fallback to static option" msgstr "Habilitar la caida a opción estática" +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Habilite esta opción para configurar un perfil estático y recurrir a él cuando falle la concesión de DHCP." + msgid "Static IP" msgstr "IP estática" @@ -880,19 +994,19 @@ msgid "Information provided by /sys/class/net" msgstr "Información ofrecida por /sys/class/net" msgid "Devices" -msgstr "" +msgstr "Dispositivos" msgid "Diagnostics" -msgstr "" +msgstr "Diagnósticos" -msgid "Properties of network devices" -msgstr "Propiedades de los dispositivos de red" +msgid "Network devices" +msgstr "Dispositivos de red" msgid "Device" msgstr "Dispositivo" -msgid "MAC" -msgstr "MAC" +msgid "MAC address" +msgstr "Dirección MAC" msgid "USB vid/pid" msgstr "USB vid/pid" @@ -906,11 +1020,11 @@ msgstr "Nombre Fijo" msgid "Change" msgstr "Cambiar" -msgid "Settings for Mobile Data Devices" -msgstr "Configuración de dispositivos de datos móviles" +msgid "Mobile data settings" +msgstr "Configuración de datos móviles" -msgid "PIN of SIM card" -msgstr "PIN de tarjeta SIM" +msgid "SIM card PIN number" +msgstr "Número PIN de la tarjeta SIM" msgid "APN Settings (Modem device ppp0)" msgstr "Ajustes de APN (dispositivo móvil ppp0)" @@ -931,103 +1045,103 @@ msgid "Unable to detect interface" msgstr "No se puede detectar la interfaz" msgid "Routing table" -msgstr "" +msgstr "Tabla de enrutamiento" msgid "raw output" -msgstr "" +msgstr "salida sin procesar" msgid "Setting wireless regulatory domain to %s" -msgstr "" +msgstr "Estableciendo dominio regulatorio inalámbrico a %s" msgid "Please provide a valid SSID." -msgstr "" +msgstr "Por favor proporciona un SSID válido." msgid "Please provide a valid PSK." -msgstr "" +msgstr "Por favor proporciona una PSK válida." msgid "Speedtest" -msgstr "" +msgstr "Prueba de velocidad" msgid "Selecting a server" -msgstr "" +msgstr "Seleccionando un servidor" msgid "Privacy" -msgstr "" +msgstr "Privacidad" msgid "Server" -msgstr "" +msgstr "Servidor" msgid "ms" -msgstr "" +msgstr "ms" msgid "Mbps" -msgstr "" +msgstr "Mbps" msgid "Ping" -msgstr "" +msgstr "Ping" msgid "Jitter" -msgstr "" +msgstr "Jitter" msgid "Upload" -msgstr "" +msgstr "Subida" msgid "Start" -msgstr "" +msgstr "Iniciar" msgid "Abort" -msgstr "" +msgstr "Cancelar" msgid "Wireless LAN routing" -msgstr "" +msgstr "Enrutamiento LAN inalámbrico" msgid "Stop WLAN routing" -msgstr "" +msgstr "Detener enrutamiento WLAN" msgid "Start WLAN routing" -msgstr "" +msgstr "Iniciar enrutamiento WLAN" msgid "Restart WLAN routing" -msgstr "" +msgstr "Reiniciar enrutamiento WLAN" msgid "This option configures RaspAP to route network traffic from your wireless client (STA) interface to another available interface." -msgstr "" +msgstr "Esta opción configura RaspAP para enrutar el tráfico de red desde tu interfaz de cliente inalámbrico (STA) a otra interfaz disponible." msgid "When an output interface is selected, iptables rules are added to route packets using network address translation (NAT). This is often done to share internet connectivity from a WLAN with devices on an eth0, usb0 or predictable enx interface." -msgstr "" +msgstr "Cuando se selecciona una interfaz de salida, se agregan reglas de iptables para enrutar paquetes usando traducción de direcciones de red (NAT). Esto se hace a menudo para compartir conectividad a internet desde una WLAN con dispositivos en una interfaz eth0, usb0 o predecible enx." msgid "Wireless client interface" -msgstr "" +msgstr "Interfaz de cliente inalámbrico" msgid "Output interface" -msgstr "" +msgstr "Interfaz de salida" msgid "Configure a static IP address and DHCP for output interface" -msgstr "" +msgstr "Configurar una dirección IP estática y DHCP para la interfaz de salida" msgid "Attempting to enable routing between %s and %s interfaces" -msgstr "" +msgstr "Intentando habilitar enrutamiento entre las interfaces %s y %s" msgid "Attempting to disable routing between %s and %s interfaces" -msgstr "" +msgstr "Intentando deshabilitar enrutamiento entre las interfaces %s y %s" msgid "No default DHCP configuration exists for the %s interface" -msgstr "" +msgstr "No existe configuración DHCP predeterminada para la interfaz %s" msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" -msgstr "" +msgstr "Configura una IP estática y DHCP para esta interfaz en la configuración del servidor DHCP" msgid "WLAN routing configuration saved" -msgstr "" +msgstr "Configuración de enrutamiento WLAN guardada" msgid "Unable to save WLAN routing configuration" -msgstr "" +msgstr "No se puede guardar la configuración de enrutamiento WLAN" msgid "Successfully restarted dnsmasq" -msgstr "" +msgstr "dnsmasq reiniciado exitosamente" msgid "Failed to restart dnsmasq" -msgstr "" +msgstr "Error al reiniciar dnsmasq" #: includes/system.php msgid "System Information" @@ -1058,14 +1172,20 @@ msgid "Uptime" msgstr "Tiempo conectado" msgid "System Time" -msgstr "" +msgstr "Hora del sistema" msgid "Memory Used" msgstr "Memoria Usada" +msgid "Storage Used" +msgstr "Almacenamiento usado" + msgid "CPU Load" msgstr "Carga de CPU" +msgid "CPU Temp" +msgstr "Temperatura de CPU" + msgid "Reboot" msgstr "Reiniciar" @@ -1073,16 +1193,16 @@ msgid "Shutdown" msgstr "Apagar" msgid "System reboot" -msgstr "" +msgstr "Reinicio del sistema" msgid "System shutdown" -msgstr "" +msgstr "Apagado del sistema" msgid "Reboot now? The system will be temporarily unavailable." -msgstr "" +msgstr "¿Reiniciar ahora? El sistema no estará disponible temporalmente." msgid "Shutdown now? The system will be unavailable." -msgstr "" +msgstr "¿Apagar ahora? El sistema no estará disponible." msgid "System Rebooting Now!" msgstr "¡El sistema se está reiniciando ahora!" @@ -1112,25 +1232,25 @@ msgid "Reset complete. Restart the hotspot for the changes to take effect." msgstr "Reinicio completo. Reinicie el punto de acceso para que los cambios tendran efecto." msgid "System reset in progress..." -msgstr "" +msgstr "Restablecimiento del sistema en progreso..." msgid "Reset" -msgstr "" +msgstr "Restablecer" msgid "Restore settings" -msgstr "" +msgstr "Restaurar configuración" msgid "To reset RaspAP to its initial configuration, click or tap the button below." -msgstr "" +msgstr "Para restablecer RaspAP a su configuración inicial, haz clic o toca el botón de abajo." msgid "Custom files for optional components such as Ad Blocking, WireGuard or OpenVPN will remain on the system." -msgstr "" +msgstr "Los archivos personalizados para componentes opcionales como Bloqueo de Anuncios, WireGuard u OpenVPN permanecerán en el sistema." msgid "Perform reset" -msgstr "" +msgstr "Realizar restablecimiento" msgid "Restores all access point (AP) service settings to their default values. This applies to hostapd, dhcpcd and dnsmasq." -msgstr "" +msgstr "Restaura todas las configuraciones de servicio del punto de acceso (AP) a sus valores predeterminados. Esto aplica a hostapd, dhcpcd y dnsmasq." msgid "Theme settings" msgstr "Configuracion de tema" @@ -1142,112 +1262,142 @@ msgid "Color" msgstr "Color" msgid "Enable this option for resizable, drag and drop widgets. Best for large displays." -msgstr "" +msgstr "Habilita esta opción para widgets redimensionables y arrastrables. Mejor para pantallas grandes." msgid "Dynamic widgets" -msgstr "" +msgstr "Widgets dinámicos" msgid "Tools" -msgstr "" +msgstr "Herramientas" msgid "System tools" -msgstr "" +msgstr "Herramientas del sistema" msgid "To generate a system debug log, click or tap the button below." -msgstr "" +msgstr "Para generar un registro de depuración del sistema, haz clic o toca el botón de abajo." msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." -msgstr "" +msgstr "La información del registro de depuración contiene la versión de RaspAP, el estado actual y configuración de servicios relacionados con el punto de acceso, paquetes del sistema instalados, versión del kernel de Linux y detalles de red. No se incluyen contraseñas u otros datos sensibles." msgid "Generate debug log" -msgstr "" +msgstr "Generar registro de depuración" msgid "Debug log generation in progress..." -msgstr "" +msgstr "Generación de registro de depuración en progreso..." msgid "Diagnostic log size limit (KB)" -msgstr "" +msgstr "Límite de tamaño del registro de diagnóstico (KB)" msgid "Changing log limit size to %s KB" -msgstr "" +msgstr "Cambiando el límite de tamaño del registro a %s KB" msgid "Information provided by raspap.sysinfo" -msgstr "" +msgstr "Información proporcionada por raspap.sysinfo" msgid "The following user plugins are available to extend RaspAP's functionality." -msgstr "" +msgstr "Los siguientes complementos de usuario están disponibles para extender la funcionalidad de RaspAP." msgid "Choose Details for more information and to install a plugin." -msgstr "" +msgstr "Elige Detalles para más información y para instalar un complemento." msgid "Network error" -msgstr "" +msgstr "Error de red" msgid "Unable to load plugins" -msgstr "" +msgstr "No se pueden cargar los complementos" msgid "Reload" -msgstr "" +msgstr "Recargar" msgid "and try again" -msgstr "" +msgstr "e intenta de nuevo" msgid "Plugins" -msgstr "" +msgstr "Complementos" msgid "Plugin details" -msgstr "" +msgstr "Detalles del complemento" msgid "Name" -msgstr "" +msgstr "Nombre" msgid "Version" -msgstr "" +msgstr "Versión" msgid "Description" -msgstr "" +msgstr "Descripción" msgid "Plugin source" -msgstr "" +msgstr "Fuente del complemento" msgid "Author" -msgstr "" +msgstr "Autor" msgid "License" -msgstr "" +msgstr "Licencia" msgid "Language locale" -msgstr "" +msgstr "Configuración regional de idioma" msgid "Configuration files" -msgstr "" +msgstr "Archivos de configuración" msgid "Dependencies" -msgstr "" +msgstr "Dependencias" msgid "Permissions" -msgstr "" +msgstr "Permisos" msgid "Non-privileged users" -msgstr "" +msgstr "Usuarios sin privilegios" msgid "Install now" -msgstr "" +msgstr "Instalar ahora" msgid "Installing plugin" -msgstr "" +msgstr "Instalando complemento" msgid "Plugin installation in progress..." -msgstr "" +msgstr "Instalación del complemento en progreso..." msgid "Plugin install completed." -msgstr "" +msgstr "Instalación del complemento completada." msgid "Details" -msgstr "" +msgstr "Detalles" msgid "Installed" -msgstr "" +msgstr "Instalado" + +msgid "Alert messages" +msgstr "Mensajes de alerta" + +msgid "Alert close timeout (milliseconds)" +msgstr "Tiempo de espera de cierre de alerta (milisegundos)" + +msgid "Automatically close alerts after a specified timeout" +msgstr "Cerrar automáticamente las alertas después de un tiempo de espera especificado" + +msgid "To inspect adapters attached to this device, click or tap the button below." +msgstr "Para inspeccionar adaptadores conectados a este dispositivo, haz clic o toca el botón de abajo." + +msgid "The adapter inspection tool returns details about external WLAN devices including drivers, supported modes and so on." +msgstr "La herramienta de inspección de adaptadores devuelve detalles sobre dispositivos WLAN externos incluyendo controladores, modos soportados, etc." + +msgid "Choose a network interface to inspect" +msgstr "Elige una interfaz de red para inspeccionar" + +msgid "Select an interface..." +msgstr "Selecciona una interfaz..." + +msgid "Adapter health check" +msgstr "Verificación de salud del adaptador" + +msgid "Inspect adapters" +msgstr "Inspeccionar adaptadores" + +msgid "Theme" +msgstr "Temas" #: includes/data_usage.php msgid "Data usage" @@ -1354,7 +1504,7 @@ msgid "Currently available OpenVPN client configurations are displayed below." msgstr "Las configuraciones de cliente OpenVPN actualmente disponibles se muestran a continuación." msgid "Activating a configuration will restart the openvpn-client service." -msgstr "" +msgstr "Activar una configuración reiniciará el servicio openvpn-client." msgid "Delete OpenVPN client" msgstr "Eliminar cliente OpenVPN" @@ -1468,7 +1618,7 @@ msgid "down" msgstr "abajo" msgid "Clear log" -msgstr "" +msgstr "Limpiar registro" msgid "adblock" msgstr "Bloqueador de anuncios" @@ -1552,13 +1702,13 @@ msgid "This option uploads and installs an existing WireGuard .conf msgstr "Esta opción sube e instala un archivo de WireGuard .conf existente en este dispositivo." msgid "Apply iptables rules to the selected interface" -msgstr "" +msgstr "Aplicar reglas de iptables a la interfaz seleccionada" msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on a desired interface. The active AP interface is the default." -msgstr "" +msgstr "Recomendado si deseas reenviar el tráfico de red desde la interfaz wg0 a clientes conectados en una interfaz deseada. La interfaz del punto de acceso activo es la predeterminada." msgid "This option adds iptables Postup and PostDown rules for the interface selected below." -msgstr "" +msgstr "Esta opción agrega reglas de iptables Postup y PostDown para la interfaz seleccionada abajo." msgid "Select WireGuard configuration file (.conf)" msgstr "Seleccionar archivo de configuración de WireGuard (.conf)" @@ -1648,25 +1798,25 @@ msgid "WireGuard configuration failed to be updated" msgstr "No se pudo actualizar la configuración de WireGuard" msgid "Enable kill switch" -msgstr "" +msgstr "Habilitar interruptor de emergencia" msgid "This option adds iptables PostUp and PreDown rules for the configured interface." -msgstr "" +msgstr "Esta opción agrega reglas de iptables PostUp y PreDown para la interfaz configurada." msgid "Recommended if you wish to prevent the flow of unencrypted packets through non-WireGuard interfaces." -msgstr "" +msgstr "Recomendado si deseas prevenir el flujo de paquetes sin cifrar a través de interfaces que no son WireGuard." msgid "iptables rules added to WireGuard configuration" -msgstr "" +msgstr "Reglas de iptables agregadas a la configuración de WireGuard" msgid "Existing iptables rules found in WireGuard configuration - not added" -msgstr "" +msgstr "Se encontraron reglas de iptables existentes en la configuración de WireGuard - no se agregaron" msgid "Currently available WireGuard file configurations are displayed below." -msgstr "" +msgstr "Las configuraciones de archivo de WireGuard actualmente disponibles se muestran abajo." msgid "Activating a configuration will restart the wg-quick service." -msgstr "" +msgstr "Activar una configuración reiniciará el servicio wg-quick." msgid "Client Firewall" msgstr "Cortafuegos del cliente" @@ -1681,196 +1831,196 @@ msgid "The default firewall will only allow outgoing and already established tra msgstr "El cortafuegos por defecto solo permitirá tráfico saliente y ya establecido." msgid "No incoming UDP traffic is allowed." -msgstr "" +msgstr "No se permite tráfico UDP entrante." msgid "There are no restrictions for the access point %s." -msgstr "" +msgstr "No hay restricciones para el punto de acceso %s." msgid "Exception: Service" -msgstr "" +msgstr "Excepción: Servicio" msgid "allow SSH access on port 22" -msgstr "" +msgstr "permitir acceso SSH en el puerto 22" msgid "allow access to the RaspAP GUI on port 80 or 443" -msgstr "" +msgstr "permitir acceso a la interfaz de RaspAP en el puerto 80 o 443" msgid "Allow incoming connections for some services from the internet side." -msgstr "" +msgstr "Permitir conexiones entrantes para algunos servicios desde el lado de internet." msgid "Exception: network device" -msgstr "" +msgstr "Excepción: dispositivo de red" msgid "Exclude device(s)" -msgstr "" +msgstr "Excluir dispositivo(s)" msgid "Exclude the given network device(s) (separated by a blank or comma) from firewall rules." -msgstr "" +msgstr "Excluir los dispositivos de red dados (separados por un espacio o coma) de las reglas del firewall." msgid "Current client devices: %s" -msgstr "" +msgstr "Dispositivos cliente actuales: %s" msgid "The access point %s is per default excluded." -msgstr "" +msgstr "El punto de acceso %s está excluido por defecto." msgid "Exception: IP-Address" -msgstr "" +msgstr "Excepción: Dirección IP" msgid "Allow incoming connections from" -msgstr "" +msgstr "Permitir conexiones entrantes desde" msgid "For the given IP-addresses (separated by a blank or comma) the incoming connection (via TCP and UDP) is accepted." -msgstr "" +msgstr "Para las direcciones IP dadas (separadas por un espacio o coma) se acepta la conexión entrante (vía TCP y UDP)." msgid "This is required for an OpenVPN via UDP or Wireguard connection." -msgstr "" +msgstr "Esto es requerido para una conexión OpenVPN vía UDP o Wireguard." msgid "The list of configured VPN server IP addresses: %s" -msgstr "" +msgstr "La lista de direcciones IP del servidor VPN configuradas: %s" msgid "Disable Firewall" -msgstr "" +msgstr "Deshabilitar firewall" msgid "Enable Firewall" -msgstr "" +msgstr "Habilitar firewall" msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." -msgstr "" +msgstr "Cambiar el estado del firewall puede interrumpir o permitir tráfico entrante. Selecciona Continuar para proceder." msgid "Proceed" -msgstr "" +msgstr "Continuar" msgid "Apply changes" -msgstr "" +msgstr "Aplicar cambios" msgid "Dynamic DNS" -msgstr "" +msgstr "DNS dinámico" msgid "Service provider" -msgstr "" +msgstr "Proveedor de servicio" msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." -msgstr "" +msgstr "Selecciona un servicio de DNS dinámico soportado por ddclient de la lista abajo. Seleccionar un proveedor de servicio conocido llenará los campos de protocolo y servidor. También puedes configurar el servicio manualmente." msgid "Method to obtain IP" -msgstr "" +msgstr "Método para obtener la IP" msgid "Select the method used by ddclient to obtain an IP address. This value is specified in the -use option." -msgstr "" +msgstr "Selecciona el método usado por ddclient para obtener una dirección IP. Este valor se especifica en la opción -use." msgid "Discovery page on the web" -msgstr "" +msgstr "Página de descubrimiento en la web" msgid "Network interface" -msgstr "" +msgstr "Interfaz de red" msgid "Network address" -msgstr "" +msgstr "Dirección de red" msgid "Firewall status page" -msgstr "" +msgstr "Página de estado del firewall" msgid "External command" -msgstr "" +msgstr "Comando externo" msgid "Web address" -msgstr "" +msgstr "Dirección web" msgid "Firewall" -msgstr "" +msgstr "Cortafuegos" msgid "Command" -msgstr "" +msgstr "Comando" msgid "Example: 192.168.1.254/status.htm." -msgstr "" +msgstr "Ejemplo: 192.168.1.254/status.htm." msgid "Example: /usr/local/bin/get-ip." -msgstr "" +msgstr "Ejemplo: /usr/local/bin/get-ip." msgid "Domain" -msgstr "" +msgstr "Dominio" msgid "Enable SSL" -msgstr "" +msgstr "Habilitar SSL" msgid "Use an encrypted SSL connection for updates. Not supported by all providers." -msgstr "" +msgstr "Usar una conexión SSL cifrada para actualizaciones. No soportado por todos los proveedores." msgid "Value specified in milliseconds (ms). Default is 300." -msgstr "" +msgstr "Valor especificado en milisegundos (ms). El predeterminado es 300." msgid "Use the Generate log button to output detailed ddclient daemon debug info" -msgstr "" +msgstr "Usa el botón Generar registro para mostrar información de depuración detallada del demonio ddclient" msgid "Generate log" -msgstr "" +msgstr "Generar registro" msgid "Information provided by ddclient" -msgstr "" +msgstr "Información proporcionada por ddclient" msgid "Start Dynamic DNS" -msgstr "" +msgstr "Iniciar DNS dinámico" msgid "Stop Dynamic DNS" -msgstr "" +msgstr "Detener DNS dinámico" msgid "Restart Dynamic DNS" -msgstr "" +msgstr "Reiniciar DNS dinámico" msgid "Account details" -msgstr "" +msgstr "Detalles de la cuenta" msgid "My account" -msgstr "" +msgstr "Mi cuenta" msgid "Server location" -msgstr "" +msgstr "Ubicación del servidor" msgid "Choosing Save settings will connect to the selected country." -msgstr "" +msgstr "Seleccionar Guardar configuración se conectará al país seleccionado." msgid "Choosing Connect %s will connect to a recommended server." -msgstr "" +msgstr "Seleccionar Conectar %s se conectará a un servidor recomendado." msgid "Select a country from the server location list" -msgstr "" +msgstr "Selecciona un país de la lista de ubicación del servidor" msgid "Select a country..." -msgstr "" +msgstr "Selecciona un país..." msgid "Account information not available from %s's Linux CLI." -msgstr "" +msgstr "Información de cuenta no disponible desde la CLI de Linux de %s." msgid "Attempting to connect to %s" -msgstr "" +msgstr "Intentando conectarse a %s" msgid "Attempting to connect VPN provider" -msgstr "" +msgstr "Intentando conectar proveedor VPN" msgid "Attempting to disconnect VPN provider" -msgstr "" +msgstr "Intentando desconectar proveedor VPN" msgid "Expected %s binary not found at: %s" -msgstr "" +msgstr "El binario esperado %s no se encontró en: %s" msgid "Visit the installation instructions for %s's Linux CLI." -msgstr "" +msgstr "Visita las instrucciones de instalación para la CLI de Linux de %s." msgid "Unable to execute %s binary found at: %s" -msgstr "" +msgstr "No se puede ejecutar el binario %s encontrado en: %s" msgid "Check that binary is executable and permissions exist in raspap.sudoers" -msgstr "" +msgstr "Verifica que el binario sea ejecutable y que existan permisos en raspap.sudoers" msgid "Installed Linux CLI: %s" -msgstr "" +msgstr "CLI de Linux instalada: %s" msgid "Current %s connection status is displayed below." -msgstr "" +msgstr "El estado de conexión actual de %s se muestra abajo." msgid "Information provided by %s" -msgstr "" +msgstr "Información proporcionada por %s" msgid "Connect %s" msgstr "Conectar %s" @@ -1888,362 +2038,701 @@ msgid "Contributing" msgstr "Contribuir" msgid "Check for update" -msgstr "" +msgstr "Buscar actualización" msgid "New release check in progress..." -msgstr "" +msgstr "Verificación de nueva versión en progreso..." msgid "A new release is available: Version" -msgstr "" +msgstr "Una nueva versión está disponible: Versión" msgid "Installed version is the latest release." -msgstr "" +msgstr "La versión instalada es la última versión." msgid "GitHub authentication" -msgstr "" +msgstr "Autenticación de GitHub" msgid "Updating Insiders requires GitHub authentication." -msgstr "" +msgstr "Actualizar Insiders requiere autenticación de GitHub." msgid "Your credentials will be sent to GitHub securely with SSL. However, use caution if your RaspAP install is on a WLAN shared by untrusted users." -msgstr "" +msgstr "Tus credenciales se enviarán a GitHub de forma segura con SSL. Sin embargo, ten precaución si tu instalación de RaspAP está en una WLAN compartida por usuarios no confiables." msgid "Personal Access Token" -msgstr "" +msgstr "Token de acceso personal" msgid "Please provide a valid token." -msgstr "" +msgstr "Por favor proporciona un token válido." msgid "Perform update" -msgstr "" +msgstr "Realizar actualización" msgid "Update in progress" -msgstr "" +msgstr "Actualización en progreso" msgid "Application is being updated..." -msgstr "" +msgstr "La aplicación se está actualizando..." msgid "Configuring update" -msgstr "" +msgstr "Configurando actualización" msgid "Updating sources" -msgstr "" +msgstr "Actualizando fuentes" msgid "Installing package updates" -msgstr "" +msgstr "Instalando actualizaciones de paquetes" msgid "Downloading latest files" -msgstr "" +msgstr "Descargando archivos más recientes" msgid "Installing application" -msgstr "" +msgstr "Instalando aplicación" msgid "Update complete" -msgstr "" +msgstr "Actualización completa" msgid "An error occurred. Check the log at /tmp/raspap_install.log" -msgstr "" +msgstr "Ocurrió un error. Revisa el registro en /tmp/raspap_install.log" + +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP es una co-creación de %1$s y %2$s con las contribuciones de nuestra %3$s y nuestros %4$s. Obtenga más información sobre cómo unirse al proyecto como %5$s, %6$s o %7$s con acceso inmediato a %8$s disponibles para %9$s." + +msgid "developer community" +msgstr "comunidad de desarrolladores" + +msgid "language translators" +msgstr "traductores de idiomas" + +msgid "code contributor" +msgstr "colaborador de código" + +msgid "translator" +msgstr "traductor" + +msgid "financial sponsor" +msgstr "patrocinador financiero" + +msgid "exclusive features" +msgstr "funciones exclusivas" msgid "RaspAP Exception" -msgstr "" +msgstr "Excepción de RaspAP" msgid "An exception occurred" -msgstr "" +msgstr "Ocurrió una excepción" msgid "RestAPI" -msgstr "" +msgstr "RestAPI" msgid "RestAPI settings" -msgstr "" +msgstr "Configuración de RestAPI" msgid "Start RestAPI service" -msgstr "" +msgstr "Iniciar servicio RestAPI" msgid "Stop RestAPI service" -msgstr "" +msgstr "Detener servicio RestAPI" msgid "API Key" -msgstr "" +msgstr "Clave API" msgid "Saving API key" -msgstr "" +msgstr "Guardando clave API" msgid "RestAPI status" -msgstr "" +msgstr "Estado de RestAPI" msgid "Current restapi.service status is displayed below." -msgstr "" +msgstr "El estado actual de restapi.service se muestra abajo." msgid "RestAPI docs are accessible here%s" -msgstr "" +msgstr "La documentación de RestAPI está accesible aquí%s" msgid "Restarting restapi.service" -msgstr "" +msgstr "Reiniciando restapi.service" msgid "Information provided by restapi.service" -msgstr "" +msgstr "Información proporcionada por restapi.service" msgid "Session Expired" -msgstr "" +msgstr "Sesión expirada" msgid "Your session has expired. Please login to continue." -msgstr "" +msgstr "Tu sesión ha expirado. Por favor inicia sesión para continuar." msgid "Login" -msgstr "" +msgstr "Iniciar sesión" msgid "Administrator login" -msgstr "" +msgstr "Inicio de sesión de administrador" msgid "Forgot password" -msgstr "" +msgstr "Olvidé mi contraseña" msgid "Login failed" -msgstr "" +msgstr "Error de inicio de sesión" msgid "NTP Server" -msgstr "" +msgstr "Servidor NTP" msgid "NTP Server settings" -msgstr "" +msgstr "Configuración del servidor NTP" msgid "NTP daemon" -msgstr "" +msgstr "Demonio NTP" msgid "Synchronized time" -msgstr "" +msgstr "Hora sincronizada" msgid "NTP servers" -msgstr "" +msgstr "Servidores NTP" msgid "Add an NTP server" -msgstr "" +msgstr "Agregar un servidor NTP" msgid "Start NTP service" -msgstr "" +msgstr "Iniciar servicio NTP" msgid "Stop NTP service" -msgstr "" +msgstr "Detener servicio NTP" msgid "Edit mode" -msgstr "" +msgstr "Modo de edición" msgid "Use the Edit mode toggle to manually edit the current ntp.config configuration." -msgstr "" +msgstr "Usa el interruptor Modo de edición para editar manualmente la configuración actual de ntp.config." msgid "Specify a public NTP server or a private one on your local network. IPv4 and IPv6 address, or a fully qualified domain name (FQDN) are acceptable values." -msgstr "" +msgstr "Especifica un servidor NTP público o uno privado en tu red local. Una dirección IPv4 o IPv6, o un nombre de dominio completamente calificado (FQDN) son valores aceptables." msgid "Public NTP servers supporting Network Time Security (NTS) may be specified with the nts suffix." -msgstr "" +msgstr "Los servidores NTP públicos que soportan Network Time Security (NTS) pueden especificarse con el sufijo nts." msgid "Examples of valid server entries include %s, %s and %s." -msgstr "" +msgstr "Ejemplos de entradas de servidor válidas incluyen %s, %s y %s." msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." -msgstr "" +msgstr "El estado actual de ntpq peer se muestra abajo. Un asterisco (*) indica el servidor preferido." msgid "NTP configuration cannot be empty" -msgstr "" +msgstr "La configuración NTP no puede estar vacía" msgid "Restarting ntpd.service" -msgstr "" +msgstr "Reiniciando ntpd.service" msgid "Please enter a valid NTP server" -msgstr "" +msgstr "Por favor ingresa un servidor NTP válido" msgid "Attempting to start ntp.service" -msgstr "" +msgstr "Intentando iniciar ntp.service" msgid "Attempting to stop ntp.service" -msgstr "" +msgstr "Intentando detener ntp.service" msgid "NTP configuration not found at %s" -msgstr "" +msgstr "Configuración NTP no encontrada en %s" msgid "NTP configuration updated" -msgstr "" +msgstr "Configuración NTP actualizada" msgid "Advertising device as a Tailscale exit node" -msgstr "" +msgstr "Anunciando dispositivo como nodo de salida de Tailscale" msgid "Attempting to optimize UDP throughput" -msgstr "" +msgstr "Intentando optimizar el rendimiento UDP" msgid "Kernel transport layer offloads enabled for UDP" -msgstr "" +msgstr "Descargas de la capa de transporte del kernel habilitadas para UDP" msgid "Failed to enable kernel transport layer offloads for UDP" -msgstr "" +msgstr "Error al habilitar descargas de la capa de transporte del kernel para UDP" msgid "Attempting to set tailscale up" -msgstr "" +msgstr "Intentando activar tailscale" msgid "Attempting to set tailscale down" -msgstr "" +msgstr "Intentando desactivar tailscale" msgid "Attempting to disconnect from tailscale" -msgstr "" +msgstr "Intentando desconectar de tailscale" msgid "Disconnected from tailscale and expired node key" -msgstr "" +msgstr "Desconectado de tailscale y clave de nodo expirada" msgid "Unable to disconnect from tailscale" -msgstr "" +msgstr "No se puede desconectar de tailscale" msgid "Expected tailscale binary not found at: %" -msgstr "" +msgstr "El binario esperado de tailscale no se encontró en: %" msgid "A Tailscale VPN exit node extension for RaspAP" -msgstr "" +msgstr "Una extensión de nodo de salida VPN de Tailscale para RaspAP" msgid "Unable to retrieve Tailscale login. Choose %s to continue." -msgstr "" +msgstr "No se puede recuperar el inicio de sesión de Tailscale. Selecciona %s para continuar." msgid "Start Tailscale" -msgstr "" +msgstr "Iniciar Tailscale" msgid "Stop Tailscale" -msgstr "" +msgstr "Detener Tailscale" msgid "Next" -msgstr "" +msgstr "Siguiente" msgid "Device approved and activated as a Tailscale exit node" -msgstr "" +msgstr "Dispositivo aprobado y activado como nodo de salida de Tailscale" msgid "Not connected: Login required." -msgstr "" +msgstr "No conectado: Se requiere inicio de sesión." msgid "Tailscale VPN" -msgstr "" +msgstr "VPN Tailscale" msgid "Exit node activated" -msgstr "" +msgstr "Nodo de salida activado" msgid "The device %s is connected with the address %s and offers an exit node." -msgstr "" +msgstr "El dispositivo %s está conectado con la dirección %s y ofrece un nodo de salida." msgid "See the %s on how to use this exit node with your devices." -msgstr "" +msgstr "Consulta %s sobre cómo usar este nodo de salida con tus dispositivos." msgid "Allow exit node" -msgstr "" +msgstr "Permitir nodo de salida" msgid "The device %s is pending approval as an exit node." -msgstr "" +msgstr "El dispositivo %s está pendiente de aprobación como nodo de salida." msgid "Locate the %s Exit Node badge in the machines list." -msgstr "" +msgstr "Localiza la insignia Exit Node de %s en la lista de máquinas." msgid "Open Tailscale Machines" -msgstr "" +msgstr "Abrir máquinas de Tailscale" msgid "To allow this device as an exit node, choose Open Tailscale Machines." -msgstr "" +msgstr "Para permitir este dispositivo como nodo de salida, selecciona Abrir máquinas de Tailscale." msgid "From the %s icon menu of the exit node, open the %s panel." -msgstr "" +msgstr "Desde el menú del icono %s del nodo de salida, abre el panel %s." msgid "Edit route settings" -msgstr "" +msgstr "Editar configuración de rutas" msgid "Login to Tailscale" -msgstr "" +msgstr "Iniciar sesión en Tailscale" msgid "To connect device %s to your tailnet, choose %s." -msgstr "" +msgstr "Para conectar el dispositivo %s a tu tailnet, selecciona %s." msgid "After logging in, choose Next to continue." -msgstr "" +msgstr "Después de iniciar sesión, selecciona Siguiente para continuar." msgid "Configure exit node" -msgstr "" +msgstr "Configurar nodo de salida" msgid "The device %s is connected to your tailnet with the address %s." -msgstr "" +msgstr "El dispositivo %s está conectado a tu tailnet con la dirección %s." msgid "By default, Tailscale only routes traffic between the devices on which it's been installed. You can also route all your public internet traffic by configuring a device on your network as a exit node" -msgstr "" +msgstr "Por defecto, Tailscale solo enruta el tráfico entre los dispositivos en los que se ha instalado. También puedes enrutar todo tu tráfico de internet público configurando un dispositivo en tu red como un nodo de salida" msgid "When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN." -msgstr "" +msgstr "Cuando enrutas todo el tráfico a través de un nodo de salida, estás usando efectivamente rutas predeterminadas (0.0.0.0/0, ::/0), similar a como lo harías si estuvieras usando una VPN típica." msgid "You have the option of configuring this device as an exit node, or using another exit node in your tailnet." -msgstr "" +msgstr "Tienes la opción de configurar este dispositivo como nodo de salida, o usar otro nodo de salida en tu tailnet." msgid "Select an existing exit node on your tailnet" -msgstr "" +msgstr "Selecciona un nodo de salida existente en tu tailnet" msgid "This is a typical configuration if you're using this device as a VPN travel router, for example." -msgstr "" +msgstr "Esta es una configuración típica si estás usando este dispositivo como un router de viaje VPN, por ejemplo." msgid "Configure this device as a new exit node" -msgstr "" +msgstr "Configurar este dispositivo como un nuevo nodo de salida" msgid "By configuring this device as an exit node, public internet traffic from devices connected in your tailnet will be routed through it." -msgstr "" +msgstr "Al configurar este dispositivo como nodo de salida, el tráfico de internet público de los dispositivos conectados en tu tailnet se enrutará a través de él." msgid "For security reasons, you must opt in to enable exit node functionality. The first step is to advertise %s as an exit node in your tailnet. In the next step, you'll allow this device to be an exit node." -msgstr "" +msgstr "Por razones de seguridad, debes optar por habilitar la funcionalidad de nodo de salida. El primer paso es anunciar %s como nodo de salida en tu tailnet. En el siguiente paso, permitirás que este dispositivo sea un nodo de salida." msgid "Advertise %s as an exit node" -msgstr "" +msgstr "Anunciar %s como nodo de salida" msgid "This effectively configures Tailscale as a VPN to mask your real location, access region-restricted content, or enhance privacy when connecting from untrusted networks." -msgstr "" +msgstr "Esto configura efectivamente Tailscale como una VPN para enmascarar tu ubicación real, acceder a contenido restringido por región o mejorar la privacidad al conectarte desde redes no confiables." msgid "This option lets Tailscale know your device is ready to route traffic." -msgstr "" +msgstr "Esta opción le permite a Tailscale saber que tu dispositivo está listo para enrutar tráfico." msgid "Recommended for Tailscale exit nodes with Linux 6.2 or later kernels, this uses UDP generic receive offload (GRO) forwarding to reduce CPU overhead." -msgstr "" +msgstr "Recomendado para nodos de salida de Tailscale con kernels de Linux 6.2 o posteriores, esto usa el reenvío de descarga de recepción genérica UDP (GRO) para reducir la sobrecarga de CPU." msgid "This option enables transport layer offloads for better performance." -msgstr "" +msgstr "Esta opción habilita las descargas de la capa de transporte para un mejor rendimiento." msgid "Select an exit node" -msgstr "" +msgstr "Selecciona un nodo de salida" msgid "To use %s as a VPN gateway, configure Tailscale to use an exit node. Tailscale's suggested node is indicated with a star." -msgstr "" +msgstr "Para usar %s como puerta de enlace VPN, configura Tailscale para usar un nodo de salida. El nodo sugerido de Tailscale se indica con una estrella." msgid "Advertise a subnet route for the active %s AP interface" -msgstr "" +msgstr "Anunciar una ruta de subred para la interfaz del punto de acceso activo %s" msgid "Subnet routes let you extend your Tailscale network (known as a tailnet) to include devices that don't or can't run the Tailscale client." -msgstr "" +msgstr "Las rutas de subred te permiten extender tu red de Tailscale (conocida como tailnet) para incluir dispositivos que no pueden o no ejecutan el cliente de Tailscale." msgid "A subnet route acts as a gateway between your tailnet and a physical subnet. The subnet of the active AP interface is preconfigured below; edit if necessary." -msgstr "" +msgstr "Una ruta de subred actúa como puerta de enlace entre tu tailnet y una subred física. La subred de la interfaz del punto de acceso activo está preconfigurada abajo; edita si es necesario." msgid "Route LAN traffic through the exit node." -msgstr "" +msgstr "Enrutar el tráfico LAN a través del nodo de salida." msgid "This will direct all LAN traffic to go through your exit node only." -msgstr "" +msgstr "Esto dirigirá todo el tráfico LAN para que pase únicamente a través de tu nodo de salida." -msgid "Choose Next to configure %s to use the selected exit node." -msgstr "" +msgid "Choose Next to configure %s to use the selected exit node with these options." +msgstr "Selecciona Siguiente para configurar %s para usar el nodo de salida seleccionado con estas opciones." msgid "No exit nodes found on your tailnet. Choose Back to continue." -msgstr "" +msgstr "No se encontraron nodos de salida en tu tailnet. Selecciona Atrás para continuar." msgid "Using exit node" -msgstr "" +msgstr "Usando nodo de salida" msgid "The device %s is configured to use exit node %s. It has the Tailscale MagicDNS address %s." -msgstr "" +msgstr "El dispositivo %s está configurado para usar el nodo de salida %s. Tiene la dirección MagicDNS de Tailscale %s." msgid "Choose Save settings to continue." -msgstr "" +msgstr "Selecciona Guardar configuración para continuar." msgid "Choose Next to continue." -msgstr "" +msgstr "Selecciona Siguiente para continuar." msgid "Tailnet status" -msgstr "" +msgstr "Estado de tailnet" msgid "Current tailnet status is displayed below." -msgstr "" +msgstr "El estado actual de tailnet se muestra abajo." + +msgid "Use Tailscale DNS settings (default)." +msgstr "Usar configuración DNS de Tailscale (predeterminado)." + +msgid "Uncheck to use local DNS. This sets --accept-dns=false." +msgstr "Desmarca para usar DNS local. Esto establece --accept-dns=false." + +msgid "Do not use Tailscale subnets (default on Linux)." +msgstr "No usar subredes de Tailscale (predeterminado en Linux)." + +msgid "If subnet routes exist for your tailnet, you can route your device's traffic to a subnet router. Enabling this sets --accept-routes=true." +msgstr "Si existen rutas de subred para tu tailnet, puedes enrutar el tráfico de tu dispositivo a un enrutador de subred. Habilitar esto establece --accept-routes=true." + +msgid "If keys expire for a device, connections to/from the given endpoint will stop working." +msgstr "Si las claves expiran para un dispositivo, las conexiones hacia/desde el punto final dado dejarán de funcionar." + +msgid "This option uses --force-reauth to renew the keys for this device." +msgstr "Esta opción usa --force-reauth para renovar las claves para este dispositivo." + +msgid "Start capture" +msgstr "Iniciar captura" + +msgid "Stop capture" +msgstr "Detener captura" + +msgid "Capture files" +msgstr "Archivos de captura" + +msgid "Capture interface" +msgstr "Interfaz de captura" + +msgid "Output file" +msgstr "Archivo de salida" + +msgid "Path where capture file will be saved (.pcap format)" +msgstr "Ruta donde se guardará el archivo de captura (formato .pcap)" + +msgid "File will be saved with .pcap extension" +msgstr "El archivo se guardará con extensión .pcap" + +msgid "Capture filter (BPF syntax)" +msgstr "Filtro de captura (sintaxis BPF)" + +msgid "Berkeley Packet Filter syntax. Leave empty to capture all traffic." +msgstr "Sintaxis de Berkeley Packet Filter. Deja vacío para capturar todo el tráfico." + +msgid "Examples: port 80, host 192.168.1.1, tcp and not port 22" +msgstr "Ejemplos: port 80, host 192.168.1.1, tcp and not port 22" + +msgid "Capture limits" +msgstr "Límites de captura" + +msgid "Packet count limit" +msgstr "Límite de conteo de paquetes" + +msgid "Stop capture after this many packets. Leave empty for unlimited." +msgstr "Detener captura después de esta cantidad de paquetes. Deja vacío para ilimitado." + +msgid "Duration limit (seconds)" +msgstr "Límite de duración (segundos)" + +msgid "Stop capture after this many seconds. Leave empty for unlimited." +msgstr "Detener captura después de esta cantidad de segundos. Deja vacío para ilimitado." + +msgid "Ring buffer settings" +msgstr "Configuración del búfer circular" + +msgid "File size (KB)" +msgstr "Tamaño del archivo (KB)" + +msgid "Create new file when this size is reached. Leave empty to disable." +msgstr "Crear nuevo archivo cuando se alcance este tamaño. Deja vacío para deshabilitar." + +msgid "10000 = 10 MB per file" +msgstr "10000 = 10 MB por archivo" + +msgid "Number of files" +msgstr "Número de archivos" + +msgid "Maximum number of ring buffer files to keep. Oldest files are deleted." +msgstr "Número máximo de archivos del búfer circular a mantener. Los archivos más antiguos se eliminan." + +msgid "Advanced options" +msgstr "Opciones avanzadas" + +msgid "Snapshot length (bytes)" +msgstr "Longitud de instantánea (bytes)" + +msgid "Limit the amount of data captured per packet. Leave empty for full packets." +msgstr "Limitar la cantidad de datos capturados por paquete. Deja vacío para paquetes completos." + +msgid "96 bytes captures headers only, reduces file size" +msgstr "96 bytes captura solo encabezados, reduce el tamaño del archivo" + +msgid "Promiscuous mode" +msgstr "Modo promiscuo" + +msgid "Capture all packets on the network segment, not just those destined for this interface" +msgstr "Capturar todos los paquetes en el segmento de red, no solo los destinados a esta interfaz" + +msgid "Quick filter presets" +msgstr "Preajustes de filtro rápido" + +msgid "Capture files generated by tshark are displayed below." +msgstr "Los archivos de captura generados por tshark se muestran abajo." + +msgid "No capture files found in /tmp directory" +msgstr "No se encontraron archivos de captura en el directorio /tmp" + +msgid "Filename" +msgstr "Nombre de archivo" + +msgid "Size" +msgstr "Tamaño" + +msgid "Modified" +msgstr "Modificado" + +msgid "Actions" +msgstr "Acciones" + +msgid "Download file" +msgstr "Descargar archivo" + +msgid "Delete file" +msgstr "Eliminar archivo" + +msgid "Confirm deletion" +msgstr "Confirmar eliminación" + +msgid "Are you sure you want to delete this file?" +msgstr "¿Estás seguro de que quieres eliminar este archivo?" + +msgid "All Traffic" +msgstr "Todo el tráfico" + +msgid "HTTP/HTTPS" +msgstr "HTTP/HTTPS" + +msgid "ICMP (Ping)" +msgstr "ICMP (Ping)" + +msgid "SSH" +msgstr "SSH" + +msgid "Exclude SSH" +msgstr "Excluir SSH" + +msgid "A Wireshark (TShark) CLI packet capture for RaspAP" +msgstr "Una captura de paquetes CLI de Wireshark (TShark) para RaspAP" + +msgid "Information provided by tshark" +msgstr "Información proporcionada por tshark" + +msgid "Total: %d file(s), %s" +msgstr "Total: %d archivo(s), %s" + +msgid "Captive portal" +msgstr "Portal cautivo" + +msgid "Gateway interface" +msgstr "Interfaz de puerta de enlace" + +msgid "Gateway name" +msgstr "Nombre de puerta de enlace" + +msgid "Gateway address" +msgstr "Dirección de puerta de enlace" + +msgid "Gateway port" +msgstr "Puerto de puerta de enlace" + +msgid "Defaults to the active AP interface, typically wlan0" +msgstr "Predeterminado a la interfaz del punto de acceso activo, típicamente wlan0" + +msgid "Auto-detected from gateway interface if not specified" +msgstr "Detectado automáticamente desde la interfaz de puerta de enlace si no se especifica" + +msgid "Start portal" +msgstr "Iniciar portal" + +msgid "Stop portal" +msgstr "Detener portal" + +msgid "Information provided by nodogsplash" +msgstr "Información proporcionada por nodogsplash" + +msgid "Stop portal service" +msgstr "Detener servicio de portal" + +msgid "Start portal service" +msgstr "Iniciar servicio de portal" + +msgid "Changing the portal service will momentarily disrupt client traffic. Choose Proceed to continue." +msgstr "Cambiar el servicio de portal interrumpirá momentáneamente el tráfico del cliente. Selecciona Continuar para proceder." + +msgid "Interface to be managed by the portal" +msgstr "Interfaz a ser administrada por el portal" + +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "Nombre de tu puerta de enlace (disponible como variable \\$gatewayname)" + +msgid "IP address of the router. Leave empty for auto-detection" +msgstr "Dirección IP del router. Deja vacío para detección automática" + +msgid "Port for Nodogsplash HTTP server" +msgstr "Puerto para el servidor HTTP de Nodogsplash" + +msgid "Maximum clients" +msgstr "Clientes máximos" + +msgid "Session timeout (minutes)" +msgstr "Tiempo de espera de sesión (minutos)" + +msgid "Pre-auth idle timeout (minutes)" +msgstr "Tiempo de espera inactivo previo a autenticación (minutos)" + +msgid "Does not include users on the trusted MAC list" +msgstr "No incluye usuarios en la lista de MAC confiables" + +msgid "Auth idle timeout (minutes)" +msgstr "Tiempo de espera inactivo de autenticación (minutos)" + +msgid "Check interval (seconds)" +msgstr "Intervalo de verificación (segundos)" + +msgid "MAC address control" +msgstr "Control de dirección MAC" + +msgid "MAC mechanism" +msgstr "Mecanismo MAC" + +msgid "Blocked MAC list" +msgstr "Lista de MAC bloqueadas" + +msgid "Trusted MAC list" +msgstr "Lista de MAC confiables" + +msgid "These devices are not subject to authentication or firewall rules" +msgstr "Estos dispositivos no están sujetos a autenticación o reglas de firewall" + +msgid "Maximum number of concurrent authenticated users" +msgstr "Número máximo de usuarios autenticados concurrentes" + +msgid "Default session length in minutes. 0 = unlimited" +msgstr "Duración predeterminada de sesión en minutos. 0 = ilimitado" + +msgid "Time before unauthenticated idle users are removed" +msgstr "Tiempo antes de que se eliminen usuarios inactivos no autenticados" + +msgid "Time before authenticated idle users are deauthenticated" +msgstr "Tiempo antes de que se desautentiquen usuarios inactivos autenticados" + +msgid "How often to check client timeouts" +msgstr "Qué tan seguido verificar los tiempos de espera del cliente" + +msgid "Block: blocklisted MACs are blocked. Allow: only allowlisted MACs are allowed" +msgstr "Bloquear: las MAC en lista de bloqueo son bloqueadas. Permitir: solo se permiten MAC en lista de permitidos" + +msgid "Example: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" +msgstr "Ejemplo: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" + +msgid "Comma-separated MAC addresses that bypass authentication entirely" +msgstr "Direcciones MAC separadas por comas que omiten la autenticación completamente" + +msgid "Block (blocklist mode)" +msgstr "Bloquear (modo lista de bloqueo)" + +msgid "Allow (allowlist mode)" +msgstr "Permitir (modo lista de permitidos)" + +msgid "Gateway IP range" +msgstr "Rango de IP de puerta de enlace" + +msgid "Default: 0.0.0.0/0 (all addresses)" +msgstr "Predeterminado: 0.0.0.0/0 (todas las direcciones)" + +msgid "Debug level" +msgstr "Nivel de depuración" + +msgid "Firewall settings" +msgstr "Configuración del firewall" + +msgid "Allow all traffic for authenticated users" +msgstr "Permitir todo el tráfico para usuarios autenticados" + +msgid "Allow DNS for pre-authenticated users" +msgstr "Permitir DNS para usuarios previos a autenticación" + +msgid "IP range to manage in CIDR notation. Leave empty for all addresses" +msgstr "Rango de IP a administrar en notación CIDR. Deja vacío para todas las direcciones" + +msgid "Amount of logging detail reported by the nodogsplash.service" +msgstr "Cantidad de detalle de registro reportado por nodogsplash.service" + +msgid "0 - Errors only" +msgstr "0 - Solo errores" + +msgid "1 - Errors, warnings, infos" +msgstr "1 - Errores, advertencias, información" + +msgid "2 - Errors, warnings, infos, verbose" +msgstr "2 - Errores, advertencias, información, detallado" + +msgid "3 - Errors, warnings, infos, verbose, debug" +msgstr "3 - Errores, advertencias, información, detallado, depuración" + +msgid "When enabled, authenticated users have unrestricted access" +msgstr "Cuando está habilitado, los usuarios autenticados tienen acceso sin restricciones" + +msgid "Required for clients to resolve domain names before authentication" +msgstr "Requerido para que los clientes resuelvan nombres de dominio antes de la autenticación" + +msgid "Portal status" +msgstr "Estado del portal" + +msgid "Current nodogsplash status is displayed below." +msgstr "El estado actual de nodogsplash se muestra abajo." diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index 0c4bfef9..ddc24ed6 100644 Binary files a/locale/fr_FR/LC_MESSAGES/messages.mo and b/locale/fr_FR/LC_MESSAGES/messages.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/messages.po b/locale/fr_FR/LC_MESSAGES/messages.po index f51556ab..f844f8c7 100644 --- a/locale/fr_FR/LC_MESSAGES/messages.po +++ b/locale/fr_FR/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2025-10-22 14:14\n" +"PO-Revision-Date: 2025-11-20 12:20\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -33,9 +33,15 @@ msgstr "Tableau de bord" msgid "WiFi client" msgstr "Client WiFi" +msgid "Status" +msgstr "État" + msgid "Hotspot" msgstr "Hotspot" +msgid "Logging" +msgstr "Journalisation" + msgid "Mem Use" msgstr "Mémoire" @@ -439,6 +445,24 @@ msgstr "Merci d'être un Insider" msgid "DHCP server settings" msgstr "Paramètres du serveur DHCP" +msgid "Default gateway" +msgstr "Passerelle par défaut" + +msgid "Install a default route for this interface" +msgstr "Installer une route par défaut pour cette interface" + +msgid "Static IP options" +msgstr "Options d'IP statique" + +msgid "DHCP options" +msgstr "Options DHCP" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Activez cette option si vous souhaitez que RaspAP attribue des adresses IP aux clients sur l'interface sélectionnée. Une adresse IP statique est requise pour cette option." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Activez cette option uniquement si vous voulez que votre appareil utilise cette interface comme route principale vers Internet." + msgid "Client list" msgstr "Liste des clients" @@ -719,6 +743,27 @@ msgstr "Activer la journalisation" msgid "Logfile output" msgstr "Sortie de journal" +msgid "Log level" +msgstr "Niveau d'enregistrement" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "Des niveaux plus élevés réduisent la verbosité des journaux. Il est recommandé d'opter pour un niveau d'information." + +msgid "Verbose debugging" +msgstr "Débogage verbeux" + +msgid "Debugging" +msgstr "Débogage" + +msgid "Informational" +msgstr "Information" + +msgid "Notification" +msgstr "Notification" + +msgid "Warning" +msgstr "Avertissement" + msgid "WiFi client AP mode" msgstr "Mode AP client WiFi" @@ -921,9 +966,12 @@ msgstr "Serveur DNS alternatif" msgid "Adapter IP Address Settings" msgstr "Paramètres d'adresse IP de l'adaptateur" -msgid "Enable Fallback to Static Option" +msgid "Enable fallback to static option" msgstr "Activer la repli vers l'option statique" +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Activer cette option pour configurer un profil statique et y revenir lorsque le bail DHCP échoue." + msgid "Static IP" msgstr "IP statique" @@ -949,7 +997,7 @@ msgid "Devices" msgstr "Appareils" msgid "Diagnostics" -msgstr "Diagnostics" +msgstr "Diagnostiques" msgid "Network devices" msgstr "Appareils réseau" @@ -1135,6 +1183,9 @@ msgstr "Stockage utilisé" msgid "CPU Load" msgstr "Charge du processeur" +msgid "CPU Temp" +msgstr "Temp. CPU" + msgid "Reboot" msgstr "Redémarrer" @@ -1345,9 +1396,12 @@ msgstr "Vérification de l'état de l'adaptateur" msgid "Inspect adapters" msgstr "Inspecter les adaptateurs" +msgid "Theme" +msgstr "Thème" + #: includes/data_usage.php msgid "Data usage" -msgstr "Données utilisées" +msgstr "Utilisation des données" msgid "Data usage monitoring" msgstr "Surveillance de l'utilisation des données" @@ -2040,6 +2094,27 @@ msgstr "Mise à jour terminée" msgid "An error occurred. Check the log at /tmp/raspap_install.log" msgstr "Une erreur s'est produite. Vérifiez le journal à /tmp/raspap_install.log" +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP est une co-création de %1$s et %2$s avec les contributions de nos %3$s et %4$s. Pour en savoir plus sur la façon de rejoindre le projet en tant que %5$s, %6$s ou %7$s avec un accès immédiat à %8$s disponible à %9$s." + +msgid "developer community" +msgstr "communauté des développeurs" + +msgid "language translators" +msgstr "traducteurs de langues" + +msgid "code contributor" +msgstr "contributeur du code" + +msgid "translator" +msgstr "traducteur" + +msgid "financial sponsor" +msgstr "sponsor financier" + +msgid "exclusive features" +msgstr "fonctionnalités exclusives" + msgid "RaspAP Exception" msgstr "Exception RaspAP" diff --git a/locale/it_IT/LC_MESSAGES/messages.mo b/locale/it_IT/LC_MESSAGES/messages.mo index f72bc35d..c7bdaaf4 100644 Binary files a/locale/it_IT/LC_MESSAGES/messages.mo and b/locale/it_IT/LC_MESSAGES/messages.mo differ diff --git a/locale/it_IT/LC_MESSAGES/messages.po b/locale/it_IT/LC_MESSAGES/messages.po index 8c0ba3c9..fbb1274d 100644 --- a/locale/it_IT/LC_MESSAGES/messages.po +++ b/locale/it_IT/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2022-01-05 11:43\n" +"PO-Revision-Date: 2025-11-20 12:20\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -24,8 +24,8 @@ msgstr "Portale configurazione RaspAP Wifi" msgid "Toggle navigation" msgstr "Mostra/nascondi navigazione" -msgid "RaspAP Wifi Portal" -msgstr "Portale RaspAP WiFi" +msgid "RaspAP Admin Panel" +msgstr "Pannello Admin RaspAP" msgid "Dashboard" msgstr "Dashboard" @@ -33,14 +33,20 @@ msgstr "Dashboard" msgid "WiFi client" msgstr "Client WiFi" +msgid "Status" +msgstr "Stato" + msgid "Hotspot" msgstr "Hotspot" -msgid "Memory Use" -msgstr "Memoria utilizzata" +msgid "Logging" +msgstr "Registrazione" -msgid "CPU Temp" -msgstr "Temperatura CPU" +msgid "Mem Use" +msgstr "Uso Mem" + +msgid "CPU" +msgstr "CPU" msgid "Networking" msgstr "Rete" @@ -57,9 +63,6 @@ msgstr "Proxy TOR" msgid "Authentication" msgstr "Autenticazione" -msgid "Change Theme" -msgstr "Cambia tema" - msgid "System" msgstr "Sistema" @@ -97,6 +100,69 @@ msgstr "Nuova password" msgid "Repeat new password" msgstr "Ripeti la nuova password" +msgid "Please provide a valid username." +msgstr "Si prega di fornire un nome utente valido." + +msgid "Please provide a valid password." +msgstr "Si prega di fornire una password valida." + +msgid "Please enter your old password." +msgstr "Inserisci la tua vecchia password." + +msgid "Please enter a new password." +msgstr "Inserire una nuova password." + +msgid "Please re-enter your new password." +msgstr "Inserire nuovamente la nuova password." + +msgid "Avatar" +msgstr "Avatar" + +msgid "Click or tap to upload a new user avatar." +msgstr "Fare clic o toccare per caricare un nuovo avatar utente." + +msgid "Image files of type JPG, GIF or PNG are accepted. Max file size: 2 MB." +msgstr "Sono accettati file immagine di tipo JPG, GIF o PNG. Dimensione massima del file: 2 MB." + +msgid "Reset avatar" +msgstr "Azzeramento dell'avatar" + +msgid "Enable limited privilege user" +msgstr "Abilita l'utente con privilegi limitati" + +msgid "This option enables a non-admin user who can access RaspAP's management interface, but has limited ability to modify the existing configuration. This user becomes active when the current admin user is logged-out." +msgstr "Questa opzione abilita un utente non amministratore che può accedere all'interfaccia di gestione di RaspAP, ma ha una capacità limitata di modificare la configurazione esistente. Questo utente diventa attivo quando l'utente amministratore corrente si disconnette." + +msgid "Admin login failed. Please try again." +msgstr "Accesso amministratore fallito. Riprovare." + +msgid "Limited privilege user mode enabled" +msgstr "Modalità utente a privilegi limitati abilitata" + +msgid "Failed to enable limited privilege user mode" +msgstr "Impossibile abilitare la modalità utente a privilegi limitati" + +msgid "Logout and enable limited user mode" +msgstr "Logout e abilitazione della modalità utente limitata" + +msgid "Limited user login" +msgstr "Accesso utente limitato" + +msgid "Limited user password" +msgstr "Password utente limitata" + +msgid "This action will save the limited user's credentials and logout the current admin user. Save and enable limited privilege mode?" +msgstr "Questa azione salva le credenziali dell'utente limitato e disconnette l'utente amministratore corrente. Salvare e abilitare la modalità a privilegi limitati?" + +msgid "Save and logout" +msgstr "Salvataggio e logout" + +msgid "Admin credentials updated successfully" +msgstr "Credenziali dell'amministratore aggiornate con successo" + +msgid "Limited user credentials updated successfully" +msgstr "Credenziali utente limitate aggiornate con successo" + #: includes/configure_client.php msgid "Client settings" msgstr "Impostazioni client" @@ -147,31 +213,31 @@ msgid "Not configured" msgstr "Non configurato" msgid "Connected" -msgstr "" +msgstr "Connesso" msgid "Known" -msgstr "" +msgstr "Conosciute" msgid "Nearby" -msgstr "" +msgstr "Vicino" msgid "Note: WEP access points appear as 'Open'. RaspAP does not currently support connecting to WEP" msgstr "Nota: gli access points WEP appaiono come 'Aperti' . RaspAP non supporta attualmente la connessione WEP" msgid "No Wifi stations found" -msgstr "" +msgstr "Nessun ripetitore WIFI trovato" -msgid "Reinitializing wpa_supplicant" -msgstr "" +msgid "Reinitialized wpa_supplicant. Choose Rescan." +msgstr "Reinizializzato wpa_supplicant. Scegliere Rescan." msgid "Click 'Rescan' to search for nearby Wifi stations." -msgstr "" +msgstr "Premi su \"scansiona\" per cercare ripetitori Wifi vicini." msgid "Click 'Reinitialize' to force reinitialize wpa_supplicant." -msgstr "" +msgstr "Fare clic su 'Reinitialize' per forzare la reinizializzazione di wpa_supplicant." msgid "Reinitialize" -msgstr "" +msgstr "Reinizializzare" #: includes/dashboard.php msgid "Interface Information" @@ -231,8 +297,8 @@ msgstr "Frequenza" msgid "Link Quality" msgstr "Qualità collegamento" -msgid "Information provided by ip and iw and from system" -msgstr "Informazioni fornite dall'ip e iw a dal sistema" +msgid "Information provided by raspap.system" +msgstr "Informazioni fornite da raspap.system" msgid "No MAC Address Found" msgstr "Indirizzo MAC non trovato" @@ -268,63 +334,135 @@ msgid "Connected Devices" msgstr "Dispositivi Connessi" msgid "Client: Ethernet cable" -msgstr "" +msgstr "Client: Cavo Ethernet" + +msgid "Current status" +msgstr "Stato attuale" msgid "Ethernet" -msgstr "" +msgstr "Ethernet" msgid "Client: Smartphone (USB tethering)" -msgstr "" +msgstr "Cliente: Smartphone (tethering USB)" msgid "Smartphone" -msgstr "" +msgstr "Smartphone" msgid "WiFi" -msgstr "" +msgstr "WiFi" + +msgid "Repeater" +msgstr "Ripetitore" + +msgid "Tethering" +msgstr "Tethering" + +msgid "Cellular" +msgstr "Cellulare" + +msgid "AP" +msgstr "AP" + +msgid "Bridged" +msgstr "A ponte" + +msgid "Adblock" +msgstr "Adblock" + +msgid "VPN" +msgstr "VPN" + +msgid "Netmask" +msgstr "Maschera di rete" + +msgid "5G" +msgstr "5G" + +msgid "2.4G" +msgstr "2.4G" + +msgid "%d WLAN %s" +msgstr "%d WLAN %s" + +msgid "client" +msgid_plural "clients" +msgstr[0] "cliente" +msgstr[1] "clienti" msgid "Mobile Data Client" -msgstr "" +msgstr "Client dati mobile" msgid "Mobile Data" -msgstr "" +msgstr "Dati Cellulare" msgid "No information available" -msgstr "" +msgstr "Nessuna informazione disponibile" msgid "Interface name invalid" -msgstr "" +msgstr "Nome interfaccia non valido" msgid "Required exec function is disabled. Check if exec is not added to php disable_functions." -msgstr "" +msgstr "La funzione exec richiesta è disabilitata. Controllare se exec non è aggiunto a php disable_functions." msgid "Waiting for the interface to start ..." -msgstr "" +msgstr "In attesa dell'avvio dell'interfaccia ..." msgid "Stop the Interface" -msgstr "" +msgstr "Ferma l'interfaccia" msgid "Connection mode" -msgstr "" +msgstr "Modalità di connessione" msgid "Signal quality" -msgstr "" +msgstr "Qualità del segnale" msgid "WAN IP" -msgstr "" - -msgid "Web-GUI" -msgstr "" +msgstr "IP WAN" msgid "Signal strength" -msgstr "" +msgstr "Intensità segnale" msgid "No Client device or not yet configured" -msgstr "" +msgstr "Nessun dispositivo client o non ancora configurato" + +msgid "No Client device found" +msgstr "Nessun dispositivo client trovato" + +#: includes/footer.php +msgid "Created by the %s" +msgstr "Creato dal file %s" + +msgid "RaspAP Team" +msgstr "Team RaspAP" + +msgid "Get Insiders" +msgstr "Ottenere gli Insider" + +msgid "Thanks for being an Insider" +msgstr "Grazie per essere un Insider" #: includes/dhcp.php msgid "DHCP server settings" msgstr "Impostazioni del server DHCP" +msgid "Default gateway" +msgstr "Gateway predefinito" + +msgid "Install a default route for this interface" +msgstr "Installa una rotta predefinita per questa interfaccia" + +msgid "Static IP options" +msgstr "Opzioni IP statico" + +msgid "DHCP options" +msgstr "Opzioni DHCP" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Attivare questa opzione se si desidera che RaspAP assegni gli indirizzi IP ai client sull'interfaccia selezionata. Per questa opzione è necessario un indirizzo IP statico." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Attivare questa opzione solo se si desidera che il dispositivo utilizzi questa interfaccia come percorso primario verso Internet." + msgid "Client list" msgstr "Lista client" @@ -368,7 +506,7 @@ msgid "MAC Address" msgstr "Indirizzo MAC" msgid "Optional comment" -msgstr "" +msgstr "Commenti aggiuntivi" msgid "Host name" msgstr "Nome host" @@ -433,8 +571,8 @@ msgstr "Formato" msgid "Choose a hosted server" msgstr "Scegli un hosted server" -msgid "Enable these options to log DHCP server activity." -msgstr "Abilita queste opzioni per registrare l'attività del server DHCP." +msgid "Enable these options to log dhcpcd and dnsmasq activity." +msgstr "Abilitare queste opzioni per registrare le attività di dhcpcd e dnsmasq." msgid "Log DHCP requests" msgstr "Registra le richieste DHCP" @@ -460,8 +598,56 @@ msgstr "I client con un particolare indirizzo MAC possono essere assegnati sempr msgid "This option adds dhcp-host entries to the dnsmasq configuration." msgstr "Questa opzione aggiunge dhcp-host alla configurazione dnsmasq." -msgid "This toggles the gateway/nogateway option for this interface in the DHCPCD configuration." -msgstr "" +msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." +msgstr "Attiva l'opzione gateway/nogateway per questa interfaccia nel file dhcpcd.conf." + +msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." +msgstr "Attiva l'opzione nohook wpa_supplicant per questa interfaccia nel file dhcpcd.conf." + +msgid "Disable wpa_supplicant dhcp hook for this interface" +msgstr "Disabilita l'hook wpa_supplicant dhcp per questa interfaccia" + +msgid "If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook." +msgstr "Se si gestiscono le connessioni wireless con wpa_supplicant stesso, l'hook può creare eventi di connessione indesiderati. Questa opzione disabilita l'hook." + +msgid "Please provide a valid IP Address." +msgstr "Fornire un indirizzo IP valido." + +msgid "Please provide a valid Default gateway." +msgstr "Fornire un gateway predefinito valido." + +msgid "Please provide a valid Starting IP Address." +msgstr "Fornire un indirizzo IP di partenza valido." + +msgid "Please provide a valid Ending IP Address." +msgstr "Fornire un indirizzo IP finale valido." + +msgid "Please provide a valid Lease Time." +msgstr "Fornire un orario di locazione valido." + +msgid "Invalid interface name." +msgstr "Nome interfaccia non valido." + +msgid "Invalid static IP address." +msgstr "Indirizzo IP statico non valido." + +msgid "Invalid default gateway." +msgstr "Gateway predefinito non valido." + +msgid "Invalid DHCP range start." +msgstr "Inizio intervallo DHCP non valido." + +msgid "Invalid DHCP range end." +msgstr "Fine intervallo DHCP non valido." + +msgid "Invalid DHCP lease time, not a number." +msgstr "Tempo di locazione DHCP non valido, non è un numero." + +msgid "Unknown DHCP lease time unit." +msgstr "Unità di tempo di locazione DHCP sconosciuta." + +msgid "Invalid metric value, not a number." +msgstr "Valore metrico non valido, non è un numero." #: includes/hostapd.php msgid "Basic" @@ -485,8 +671,8 @@ msgstr "Tipo sicurezza" msgid "Encryption Type" msgstr "Tipo crittografia" -msgid "PSK" -msgstr "PSK" +msgid "Pre-shared key (PSK)" +msgstr "Chiave precondivisa (PSK)" msgid "Advanced settings" msgstr "Impostazioni avanzate" @@ -521,11 +707,26 @@ msgstr "Interfaccia sconosciuta" msgid "Country code must be blank or two characters" msgstr "Il codice paese deve essere o vuoto o di due caratteri" -msgid "Wifi Hotspot settings saved" -msgstr "Impostazioni hotspot Wifi salvate" +msgid "DHCP configuration for %s enabled." +msgstr "Configurazione DHCP per %s abilitata." -msgid "Unable to save wifi hotspot settings" -msgstr "Impossibile salvare le impostazioni dell'hotspot Wifi" +msgid "DHCP configuration for %s added." +msgstr "Aggiunta la configurazione DHCP per %s." + +msgid "DHCP configuration for %s updated." +msgstr "Aggiornamento della configurazione DHCP per %s." + +msgid "Interface %s has no default settings." +msgstr "L'interfaccia %s non ha impostazioni predefinite." + +msgid "Configure settings in DHCP Server before starting AP." +msgstr "Configurare le impostazioni del server DHCP prima di avviare l'AP." + +msgid "Wifi hotspot settings saved." +msgstr "Impostazioni hotspot Wifi salvate." + +msgid "Unable to save WiFi hotspot settings." +msgstr "Impossibile salvare le impostazioni dell'hotspot WiFi." msgid "Start hotspot" msgstr "Avvia l'hotspot" @@ -542,12 +743,39 @@ msgstr "Abilita la registrazione" msgid "Logfile output" msgstr "File di log in uscita" +msgid "Log level" +msgstr "Livello di registro" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "Livelli più alti riducono la verbosità dei registri. Si consiglia di utilizzare il livello informativo." + +msgid "Verbose debugging" +msgstr "Debug verboso" + +msgid "Debugging" +msgstr "Debug" + +msgid "Informational" +msgstr "Informativo" + +msgid "Notification" +msgstr "Notifica" + +msgid "Warning" +msgstr "Avvertenze" + msgid "WiFi client AP mode" msgstr "AP WiFi modalità client" msgid "Bridged AP mode" msgstr "Modalità AP Bridged" +msgid "WiFi repeater mode" +msgstr "Modalità ripetitore WiFi" + +msgid "Dual band AP mode" +msgstr "Modalità AP a doppia banda" + msgid "Hide SSID in broadcast" msgstr "Nascondere la trasmissione del SSID" @@ -555,7 +783,7 @@ msgid "Maximum number of clients" msgstr "Numero massimo di client" msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." -msgstr "" +msgstr "Configura l'opzione max_num_sta di hostapd. Il valore predefinito e massimo è 2007. Se vuoto o 0, si applica il valore predefinito." msgid "Beacon interval" msgstr "Intervallo del faro" @@ -576,13 +804,148 @@ msgid "Enable this option to log hostapd activity." msgstr "Abilita questa opzione per registrare l'attività hostapd." msgid "Transmit power (dBm)" -msgstr "" +msgstr "Potenza di trasmissione (dBm)" msgid "Sets the txpower option for the AP interface and the configured country." -msgstr "" +msgstr "Imposta l'opzione txpower per l'interfaccia AP e il paese configurato." msgid "dBm is a unit of level used to indicate that a power ratio is expressed in decibels (dB) with reference to one milliwatt (mW). 30 dBm is equal to 1000 mW, while 0 dBm equals 1.25 mW." -msgstr "" +msgstr "dBm è un'unità di livello utilizzata per indicare che un rapporto di potenza è espresso in decibel (dB) con riferimento a un milliwatt (mW). 30 dBm equivalgono a 1000 mW, mentre 0 dBm equivalgono a 1,25 mW." + +msgid "WPA and WPA2" +msgstr "WPA e WPA2" + +msgid "WPA2 and WPA3-Personal (transitional mode)" +msgstr "WPA2 e WPA3-Personale (modalità transitoria)" + +msgid "WPA3-Personal (required)" +msgstr "WPA3-Personale (obbligatorio)" + +msgid "Enabled (for supported clients)" +msgstr "Abilitato (per i client supportati)" + +msgid "Required (for supported clients)" +msgstr "Richiesto (per i client supportati)" + +msgid "802.11w extends strong cryptographic protection to a select set of robust management frames, including Deauthentication, Disassociation and certain categories of Action Management frames. Collectively, this is known as Management Frame Protection (MFP)." +msgstr "802.11w estende una forte protezione crittografica a una serie selezionata di frame di gestione robusti, tra cui Deautenticazione, Dissociazione e alcune categorie di frame di gestione delle azioni. Nell'insieme, questa protezione è nota come Management Frame Protection (MFP)." + +msgid "Scan this QR code directly or %s %sprint a sign%s for your users." +msgstr "Scansionate questo codice QR direttamente o %s %sstampate un cartello%s per i vostri utenti." + +msgid "Printable Wi-Fi sign" +msgstr "Cartello Wi-Fi stampabile" + +msgid "To connect with your phone or tablet, scan the QR code above with your camera app." +msgstr "Per connettersi con il telefono o il tablet, scansionare il codice QR qui sopra con l'app della fotocamera." + +msgid "For other devices, use the login credentials below." +msgstr "Per altri dispositivi, utilizzare le credenziali di accesso riportate di seguito." + +msgid "Network" +msgstr "Rete" + +msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only." +msgstr "L'interfaccia selezionata (%s) supporta solo la banda wireless a 2,4 GHz." + +msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only." +msgstr "L'interfaccia selezionata (%s) supporta solo la banda wireless a 2,5 GHz." + +msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands." +msgstr "L'interfaccia selezionata (%s) supporta entrambe le bande wireless a 2,4 e 5 GHz." + +msgid "The selected interface (%s) does not support wireless mode operation." +msgstr "L'interfaccia selezionata (%s) non supporta il funzionamento in modalità wireless." + +msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set." +msgstr "L'opzione 802.11ac 5 GHz è disattivata finché non viene impostato un dominio normativo wireless compatibile." + +msgid "WiFi repeater mode: A metric value is already defined for DHCP." +msgstr "Modalità ripetitore WiFi: Un valore metrico è già definito per DHCP." + +msgid "Restart hotspot to enable WiFi repeater mode." +msgstr "Riavviare l'hotspot per abilitare la modalità ripetitore WiFi." + +msgid "Unable to obtain metric value for client interface. Repeater mode inactive." +msgstr "Impossibile ottenere il valore della metrica per l'interfaccia client. Modalità ripetitore inattiva." + +msgid "Metric value configured for the %s interface." +msgstr "Valore metrico configurato per l'interfaccia %s." + +msgid "Parameter hiddenSSID contains invalid configuration value." +msgstr "Il parametro hiddenSSID contiene un valore di configurazione non valido." + +msgid "Parameter hiddenSSID is not a number." +msgstr "Il parametro hiddenSSID non è un numero." + +msgid "Bridge interface configuration" +msgstr "Configurazione dell'interfaccia bridge" + +msgid "Configure a static IP address for the br0 interface to maintain connectivity during bridge mode activation." +msgstr "Configurare un indirizzo IP statico per l'interfaccia br0 per mantenere la connettività durante l'attivazione della modalità bridge." + +msgid "Static IP Address" +msgstr "Indirizzo IP statico" + +msgid "Netmask / CIDR" +msgstr "Maschera di rete / CIDR" + +msgid "Example: 192.168.1.100" +msgstr "Esempio: 192.168.1.100" + +msgid "CIDR notation (e.g., 24 for 255.255.255.0)" +msgstr "Notazione CIDR (ad esempio, 24 per 255.255.255.0)" + +msgid "Gateway" +msgstr "Porta d'ingresso" + +msgid "Your router's IP address" +msgstr "Indirizzo IP del router" + +msgid "Usually same as gateway" +msgstr "Di solito è uguale al gateway" + +msgid "Bridge static IP address must be a valid IPv4 address" +msgstr "L'indirizzo IP statico del bridge deve essere un indirizzo IPv4 valido" + +msgid "Bridge netmask must be a number between 1 and 32" +msgstr "La maschera di rete del ponte deve essere un numero compreso tra 1 e 32" + +msgid "Bridge netmask is required when using static IP" +msgstr "La netmask del ponte è necessaria quando si utilizza un IP statico" + +msgid "Bridge gateway must be a valid IPv4 address" +msgstr "Il bridge gateway deve essere un indirizzo IPv4 valido" + +msgid "Bridge gateway is required when using static IP" +msgstr "Il bridge gateway è necessario quando si utilizza un IP statico" + +msgid "Bridge DNS server must be a valid IPv4 address" +msgstr "Il server DNS del ponte deve essere un indirizzo IPv4 valido" + +msgid "Bridge DNS server is required when using static IP" +msgstr "Il server DNS Bridge è necessario quando si utilizza un IP statico" + +msgid "Bridge static IP and gateway must be in the same subnet" +msgstr "L'IP statico del bridge e il gateway devono essere nella stessa sottorete" + +msgid "Please enter a valid IPv4 address" +msgstr "Inserire un indirizzo IPv4 valido" + +msgid "Please enter a valid netmask" +msgstr "Inserire una netmask valida" + +msgid "DHCP configuration for br0 enabled" +msgstr "Configurazione DHCP per br0 abilitata" + +msgid "Unable to save WiFi hotspot settings due to validation errors" +msgstr "Impossibile salvare le impostazioni dell'hotspot WiFi a causa di errori di convalida" + +msgid "Enable AP isolation" +msgstr "Abilita isolamento AP" + +msgid "Blocks wireless clients from seeing or connecting to each other. Recommended for guest networks and public access points." +msgstr "Blocca i client wireless dal vedersi o connettersi l'un l'altro. Consigliato per reti di ospiti e punti di accesso pubblici." #: includes/networking.php msgid "Summary" @@ -603,8 +966,11 @@ msgstr "Server DNS alternativo" msgid "Adapter IP Address Settings" msgstr "Impostazioni dell'indirizzo IP dell'adattatore" -msgid "Enable Fallback to Static Option" -msgstr "Abilita l'opzione statica di fallback" +msgid "Enable fallback to static option" +msgstr "Abilita il fallback all'opzione statica" + +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Abilitare questa opzione per configurare un profilo statico e tornare ad esso quando il lease DHCP fallisce." msgid "Static IP" msgstr "IP statico" @@ -627,56 +993,155 @@ msgstr "Applica le impostazioni" msgid "Information provided by /sys/class/net" msgstr "Informazioni fornite da /sys/class/net" -msgid "Network Devices" -msgstr "" +msgid "Devices" +msgstr "Dispositivi" -msgid "Mobile Data Settings" -msgstr "" +msgid "Diagnostics" +msgstr "Diagnostica" -msgid "Properties of network devices" -msgstr "" +msgid "Network devices" +msgstr "Dispositivi di rete" msgid "Device" -msgstr "" +msgstr "Dispositivo" -msgid "MAC" -msgstr "" +msgid "MAC address" +msgstr "Indirizzo MAC" msgid "USB vid/pid" -msgstr "" +msgstr "USB vid/pid" msgid "Device type" -msgstr "" +msgstr "Tipo di dispositivo" msgid "Fixed name" -msgstr "" +msgstr "Nome fisso" msgid "Change" -msgstr "" +msgstr "Modifica" -msgid "Settings for Mobile Data Devices" -msgstr "" +msgid "Mobile data settings" +msgstr "Impostazioni dei dati mobili" -msgid "PIN of SIM card" -msgstr "" +msgid "SIM card PIN number" +msgstr "Numero PIN della carta SIM" msgid "APN Settings (Modem device ppp0)" -msgstr "" +msgstr "Impostazioni APN (dispositivo modem ppp0)" msgid "Access Point Name (APN)" -msgstr "" +msgstr "Nome del punto di accesso (APN)" msgid "Password" -msgstr "" +msgstr "Password" msgid "Successfully Updated Network Configuration" -msgstr "" +msgstr "Configurazione di rete aggiornata con successo" msgid "Error saving network configuration to file" -msgstr "" +msgstr "Errore nel salvataggio della configurazione di rete su file" msgid "Unable to detect interface" -msgstr "" +msgstr "Impossibile rilevare l'interfaccia" + +msgid "Routing table" +msgstr "Tabella di instradamento" + +msgid "raw output" +msgstr "output grezzo" + +msgid "Setting wireless regulatory domain to %s" +msgstr "Impostazione del dominio di regolamentazione wireless su %s" + +msgid "Please provide a valid SSID." +msgstr "Fornire un SSID valido." + +msgid "Please provide a valid PSK." +msgstr "Fornire un PSK valido." + +msgid "Speedtest" +msgstr "Test di velocità" + +msgid "Selecting a server" +msgstr "Selezione di un server" + +msgid "Privacy" +msgstr "Privacy" + +msgid "Server" +msgstr "Server" + +msgid "ms" +msgstr "ms" + +msgid "Mbps" +msgstr "Mbps" + +msgid "Ping" +msgstr "Ping" + +msgid "Jitter" +msgstr "Jitter" + +msgid "Upload" +msgstr "Carica" + +msgid "Start" +msgstr "Inizio" + +msgid "Abort" +msgstr "Interrompere" + +msgid "Wireless LAN routing" +msgstr "Routing LAN senza fili" + +msgid "Stop WLAN routing" +msgstr "Ferma il routing Wi-Fi" + +msgid "Start WLAN routing" +msgstr "Avvia routing Wi-Fi" + +msgid "Restart WLAN routing" +msgstr "Riavvia routing Wi-Fi" + +msgid "This option configures RaspAP to route network traffic from your wireless client (STA) interface to another available interface." +msgstr "Questa opzione configura RaspAP per instradare il traffico di rete dall'interfaccia del client wireless (STA) a un'altra interfaccia disponibile." + +msgid "When an output interface is selected, iptables rules are added to route packets using network address translation (NAT). This is often done to share internet connectivity from a WLAN with devices on an eth0, usb0 or predictable enx interface." +msgstr "Quando viene selezionata un'interfaccia di uscita, vengono aggiunte regole iptables per instradare i pacchetti utilizzando la traduzione degli indirizzi di rete (NAT). Ciò avviene spesso per condividere la connettività Internet da una WLAN con dispositivi su un'interfaccia eth0, usb0 o enx prevedibile." + +msgid "Wireless client interface" +msgstr "Interfaccia client wireless" + +msgid "Output interface" +msgstr "Interfaccia di uscita" + +msgid "Configure a static IP address and DHCP for output interface" +msgstr "Configurare un indirizzo IP statico e DHCP per l'interfaccia di uscita" + +msgid "Attempting to enable routing between %s and %s interfaces" +msgstr "Tentativo di abilitare il routing tra le interfacce %s e %s" + +msgid "Attempting to disable routing between %s and %s interfaces" +msgstr "Tentativo di abilitare il routing tra le interfacce %s e %s" + +msgid "No default DHCP configuration exists for the %s interface" +msgstr "Non esiste una configurazione DHCP predefinita per l'interfaccia %s" + +msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" +msgstr "Configurare un IP statico e un DHCP per questa interfaccia nelle impostazioni del server DHCP" + +msgid "WLAN routing configuration saved" +msgstr "Configurazione del routing WLAN salvata" + +msgid "Unable to save WLAN routing configuration" +msgstr "Impossibile salvare la configurazione del routing WLAN" + +msgid "Successfully restarted dnsmasq" +msgstr "Riavviato con successo dnsmasq" + +msgid "Failed to restart dnsmasq" +msgstr "Riavvio fallito di dnsmasq" #: includes/system.php msgid "System Information" @@ -706,18 +1171,39 @@ msgstr "Revisione Pi" msgid "Uptime" msgstr "Tempo di attività" +msgid "System Time" +msgstr "Tempo del sistema" + msgid "Memory Used" msgstr "Memoria usata" +msgid "Storage Used" +msgstr "Spazio utilizzato" + msgid "CPU Load" msgstr "Carico CPU" +msgid "CPU Temp" +msgstr "Temp. CPU" + msgid "Reboot" msgstr "Riavvia" msgid "Shutdown" msgstr "Spegni" +msgid "System reboot" +msgstr "Riavvio del sistema" + +msgid "System shutdown" +msgstr "Spegnimento del sistema" + +msgid "Reboot now? The system will be temporarily unavailable." +msgstr "Riavviare ora? Il sistema sarà temporaneamente non disponibile." + +msgid "Shutdown now? The system will be unavailable." +msgstr "Arresto ora? Il sistema non sarà disponibile." + msgid "System Rebooting Now!" msgstr "Il sistema si sta riavviando ora!" @@ -730,7 +1216,42 @@ msgstr "Porta del web server" msgid "Web server bind address" msgstr "Indirizzo di bind del server Web" -#: includes/themes.php +msgid "OS" +msgstr "OS" + +msgid "Kernel" +msgstr "Kernel" + +msgid "System reset" +msgstr "Reset del sistema" + +msgid "Reset RaspAP to its initial configuration? This action cannot be undone." +msgstr "Ripristinare la configurazione iniziale di RaspAP? Questa azione non può essere annullata." + +msgid "Reset complete. Restart the hotspot for the changes to take effect." +msgstr "Ripristino completato. Riavviare l'hotspot per rendere effettive le modifiche." + +msgid "System reset in progress..." +msgstr "Reset del sistema in corso..." + +msgid "Reset" +msgstr "Azzeramento" + +msgid "Restore settings" +msgstr "Ripristino delle impostazioni" + +msgid "To reset RaspAP to its initial configuration, click or tap the button below." +msgstr "Per ripristinare la configurazione iniziale di RaspAP, fare clic o toccare il pulsante sottostante." + +msgid "Custom files for optional components such as Ad Blocking, WireGuard or OpenVPN will remain on the system." +msgstr "I file personalizzati per componenti opzionali come Ad Blocking, WireGuard o OpenVPN rimarranno nel sistema." + +msgid "Perform reset" +msgstr "Eseguire il reset" + +msgid "Restores all access point (AP) service settings to their default values. This applies to hostapd, dhcpcd and dnsmasq." +msgstr "Ripristina tutte le impostazioni dei servizi del punto di accesso (AP) ai valori predefiniti. Questo vale per hostapd, dhcpcd e dnsmasq." + msgid "Theme settings" msgstr "Impostazioni tema" @@ -740,6 +1261,144 @@ msgstr "Seleziona un tema" msgid "Color" msgstr "Colore" +msgid "Enable this option for resizable, drag and drop widgets. Best for large displays." +msgstr "Attivare questa opzione per i widget ridimensionabili e trascinabili. Ideale per i display di grandi dimensioni." + +msgid "Dynamic widgets" +msgstr "Widget dinamici" + +msgid "Tools" +msgstr "Strumenti" + +msgid "System tools" +msgstr "Strumenti di sistema" + +msgid "To generate a system debug log, click or tap the button below." +msgstr "Per generare un registro di debug del sistema, fare clic o toccare il pulsante sottostante." + +msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." +msgstr "Le informazioni del registro di debug contengono la versione di RaspAP, lo stato attuale e la configurazione dei servizi relativi all'AP, i pacchetti di sistema installati, la versione del kernel Linux e i dettagli di rete. Non sono incluse password o altri dati sensibili." + +msgid "Generate debug log" +msgstr "Generare un log di debug" + +msgid "Debug log generation in progress..." +msgstr "Generazione del log di debug in corso..." + +msgid "Diagnostic log size limit (KB)" +msgstr "Limite di dimensione del log diagnostico (KB)" + +msgid "Changing log limit size to %s KB" +msgstr "Modifica della dimensione limite del registro a %s KB" + +msgid "Information provided by raspap.sysinfo" +msgstr "Informazioni fornite da raspap.sysinfo" + +msgid "The following user plugins are available to extend RaspAP's functionality." +msgstr "Per estendere le funzionalità di RaspAP sono disponibili i seguenti plugin utente." + +msgid "Choose Details for more information and to install a plugin." +msgstr "Scegliere Dettagli per ulteriori informazioni e per installare un plugin." + +msgid "Network error" +msgstr "Errore di rete" + +msgid "Unable to load plugins" +msgstr "Impossibile caricare i plugin" + +msgid "Reload" +msgstr "Ricarica" + +msgid "and try again" +msgstr "e riprovare" + +msgid "Plugins" +msgstr "Plugin" + +msgid "Plugin details" +msgstr "Dettagli del plugin" + +msgid "Name" +msgstr "Nome" + +msgid "Version" +msgstr "Versione" + +msgid "Description" +msgstr "Descrizione" + +msgid "Plugin source" +msgstr "Origine plugin" + +msgid "Author" +msgstr "Autore" + +msgid "License" +msgstr "Licenza" + +msgid "Language locale" +msgstr "Lingua locale" + +msgid "Configuration files" +msgstr "File di configurazione" + +msgid "Dependencies" +msgstr "Dipendenze" + +msgid "Permissions" +msgstr "Permessi" + +msgid "Non-privileged users" +msgstr "Utenti non privilegiati" + +msgid "Install now" +msgstr "Installare ora" + +msgid "Installing plugin" +msgstr "Installazione del plugin" + +msgid "Plugin installation in progress..." +msgstr "Installazione del plugin in corso..." + +msgid "Plugin install completed." +msgstr "Installazione del plugin completata." + +msgid "Details" +msgstr "Dettagli" + +msgid "Installed" +msgstr "Installato" + +msgid "Alert messages" +msgstr "Messaggi di avviso" + +msgid "Alert close timeout (milliseconds)" +msgstr "Timeout chiusura avviso (millisecondi)" + +msgid "Automatically close alerts after a specified timeout" +msgstr "Chiudere automaticamente gli avvisi dopo un timeout specificato" + +msgid "To inspect adapters attached to this device, click or tap the button below." +msgstr "Per ispezionare gli adattatori collegati a questo dispositivo, fare clic o toccare il pulsante sottostante." + +msgid "The adapter inspection tool returns details about external WLAN devices including drivers, supported modes and so on." +msgstr "Lo strumento di ispezione degli adattatori fornisce dettagli sui dispositivi WLAN esterni, compresi i driver, le modalità supportate e così via." + +msgid "Choose a network interface to inspect" +msgstr "Scegliere un'interfaccia di rete da ispezionare" + +msgid "Select an interface..." +msgstr "Selezionare un'interfaccia..." + +msgid "Adapter health check" +msgstr "Controllo dello stato di salute dell'adattatore" + +msgid "Inspect adapters" +msgstr "Ispezionare gli adattatori" + +msgid "Theme" +msgstr "Tema" + #: includes/data_usage.php msgid "Data usage" msgstr "Utilizzo dei dati" @@ -845,7 +1504,7 @@ msgid "Currently available OpenVPN client configurations are displayed below." msgstr "Le configurazioni client OpenVPN attualmente disponibili sono visualizzate di seguito." msgid "Activating a configuration will restart the openvpn-client service." -msgstr "Attivando la configurazione si riavvierà il servizio openvpn-client." +msgstr "L'attivazione di una configurazione riavvia il servizio openvpn-client." msgid "Delete OpenVPN client" msgstr "Elimina client OpenVPN" @@ -881,19 +1540,19 @@ msgid "Enter username and password" msgstr "Inserisci nome utente e password" msgid "Certificates in the configuration file" -msgstr "" +msgstr "Certificati nel file di configurazione" msgid "RaspAP supports certificates by including them in the configuration file." msgstr "RaspAP supporta i certificati includendoli nel file di configurazione." msgid "Signing certification authority (CA) certificate (e.g. ca.crt): enclosed in <ca> ... </ca> tags." -msgstr "" +msgstr "Certificato dell'autorità di certificazione (CA) firmante (ad esempio ca.crt): racchiuso in <ca> ... </ca>." msgid "Client certificate (public key) (e.g. client.crt): enclosed in <cert> ... </cert> tags." -msgstr "" +msgstr "Certificato del client (chiave pubblica) (ad esempio client.crt): racchiuso in <cert> ... </cert>." msgid "Private key of the client certificate (e.g. client.key): enclosed in <key> ... </key> tags." -msgstr "" +msgstr "Chiave privata del certificato del client (ad esempio client.key): racchiusa in <key> ... </key>." msgid "Configuration File" msgstr "File di Configurazione" @@ -958,6 +1617,9 @@ msgstr "su" msgid "down" msgstr "giù" +msgid "Clear log" +msgstr "Cancella registro" + msgid "adblock" msgstr "AdBlock" @@ -1025,43 +1687,43 @@ msgid "Tunnel settings" msgstr "Impostazioni del tunnel" msgid "Configuration Method" -msgstr "" +msgstr "Metodo di configurazione" msgid "Upload file" -msgstr "" +msgstr "Carica il file" msgid "Create manually" -msgstr "" +msgstr "Creare manualmente" msgid "Upload a WireGuard config" -msgstr "" +msgstr "Caricare una configurazione WireGuard" msgid "This option uploads and installs an existing WireGuard .conf file on this device." -msgstr "" +msgstr "Questa opzione carica e installa un file .conf WireGuard esistente su questo dispositivo." -msgid "Apply iptables rules for AP interface" -msgstr "" +msgid "Apply iptables rules to the selected interface" +msgstr "Applica le regole iptables all'interfaccia selezionata" -msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on the AP interface." -msgstr "" +msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on a desired interface. The active AP interface is the default." +msgstr "Consigliato se si desidera inoltrare il traffico di rete dall'interfaccia wg0 ai client connessi su un'interfaccia desiderata. L'interfaccia AP attiva è quella predefinita." -msgid "This option adds iptables Postup and PostDown rules for the configured AP interface (%s)." -msgstr "" +msgid "This option adds iptables Postup and PostDown rules for the interface selected below." +msgstr "Questa opzione aggiunge regole iptables Postup e PostDown per l'interfaccia selezionata di seguito." msgid "Select WireGuard configuration file (.conf)" -msgstr "" +msgstr "Selezionare il file di configurazione di WireGuard (.conf)" msgid "Create a local WireGuard config" -msgstr "" +msgstr "Creare una configurazione WireGuard locale" msgid "Enable server" msgstr "Abilita il server" msgid "Enable this option to secure network traffic by creating an encrypted tunnel between RaspAP and configured peers." -msgstr "" +msgstr "Abilitare questa opzione per proteggere il traffico di rete creando un tunnel criptato tra RaspAP e i peer configurati." msgid "This setting generates a new WireGuard .conf file on this device." -msgstr "" +msgstr "Questa impostazione genera un nuovo file WireGuard .conf su questo dispositivo." msgid "Local public key" msgstr "Chiave pubblica locale" @@ -1100,10 +1762,10 @@ msgid "Persistent keepalive" msgstr "Keepalive permanente" msgid "Enable this option to display an updated wg-quick debug log." -msgstr "" +msgstr "Attivare questa opzione per visualizzare un registro di debug aggiornato di wg-quick." msgid "WireGuard debug log updated" -msgstr "" +msgstr "Aggiornamento del registro di debug di WireGuard" msgid "Scan this QR code with your client to connect to this tunnel" msgstr "Scansiona questo codice QR con il tuo client per connetterti a questo tunnel" @@ -1135,72 +1797,942 @@ msgstr "Configurazione WireGuard aggiornata con successo" msgid "WireGuard configuration failed to be updated" msgstr "Impossibile aggiornare la configurazione di WireGuard" +msgid "Enable kill switch" +msgstr "Abilita il kill switch" + +msgid "This option adds iptables PostUp and PreDown rules for the configured interface." +msgstr "Questa opzione aggiunge regole iptables PostUp e PreDown per l'interfaccia configurata." + +msgid "Recommended if you wish to prevent the flow of unencrypted packets through non-WireGuard interfaces." +msgstr "Consigliato se si desidera impedire il flusso di pacchetti non criptati attraverso interfacce non WireGuard." + +msgid "iptables rules added to WireGuard configuration" +msgstr "Regole iptables aggiunte alla configurazione di WireGuard" + +msgid "Existing iptables rules found in WireGuard configuration - not added" +msgstr "Regole iptables esistenti trovate nella configurazione di WireGuard - non aggiunte" + +msgid "Currently available WireGuard file configurations are displayed below." +msgstr "Le configurazioni dei file WireGuard attualmente disponibili sono visualizzate di seguito." + +msgid "Activating a configuration will restart the wg-quick service." +msgstr "L'attivazione di una configurazione riavvia il servizio wg-quick." + msgid "Client Firewall" -msgstr "" +msgstr "Firewall Client" msgid "Firewall is ENABLED" -msgstr "" +msgstr "Firewall ATTIVO" msgid "Firewall is OFF" -msgstr "" +msgstr "Firewall SPENTO" msgid "The default firewall will only allow outgoing and already established traffic." -msgstr "" +msgstr "Il firewall predefinito consente solo il traffico in uscita e quello già stabilito." msgid "No incoming UDP traffic is allowed." -msgstr "" +msgstr "Non è consentito il traffico UDP in entrata." msgid "There are no restrictions for the access point %s." -msgstr "" +msgstr "Non ci sono restrizioni per il punto di accesso %s." msgid "Exception: Service" -msgstr "" +msgstr "Eccezione: Servizio" msgid "allow SSH access on port 22" -msgstr "" +msgstr "consentire l'accesso SSH sulla porta 22" msgid "allow access to the RaspAP GUI on port 80 or 443" -msgstr "" +msgstr "consentire l'accesso alla GUI di Raspap sulla porta 80 o 443" msgid "Allow incoming connections for some services from the internet side." -msgstr "" +msgstr "Consente le connessioni in entrata per alcuni servizi dal lato Internet." msgid "Exception: network device" -msgstr "" +msgstr "Eccezione: dispositivo di rete" msgid "Exclude device(s)" -msgstr "" +msgstr "Escludi dispositivo(i)" msgid "Exclude the given network device(s) (separated by a blank or comma) from firewall rules." -msgstr "" +msgstr "Esclude i dispositivi di rete indicati (separati da uno spazio o da una virgola) dalle regole del firewall." msgid "Current client devices: %s" -msgstr "" +msgstr "Dispositivi client attuali: %s" msgid "The access point %s is per default excluded." -msgstr "" +msgstr "Il punto di accesso %s è escluso per impostazione predefinita." msgid "Exception: IP-Address" -msgstr "" +msgstr "Eccezione: Indirizzo IP" msgid "Allow incoming connections from" -msgstr "" +msgstr "Consentire le connessioni in entrata da" msgid "For the given IP-addresses (separated by a blank or comma) the incoming connection (via TCP and UDP) is accepted." -msgstr "" +msgstr "Per gli indirizzi IP indicati (separati da uno spazio vuoto o da una virgola) viene accettata la connessione in entrata (via TCP e UDP)." msgid "This is required for an OpenVPN via UDP or Wireguard connection." -msgstr "" +msgstr "È necessario per una connessione OpenVPN via UDP o Wireguard." msgid "The list of configured VPN server IP addresses: %s" -msgstr "" +msgstr "L'elenco degli indirizzi IP del server VPN configurato: %s" msgid "Disable Firewall" -msgstr "" +msgstr "Disabilita Firewall" msgid "Enable Firewall" -msgstr "" +msgstr "Abilita Firewall" + +msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." +msgstr "La modifica dello stato del firewall può interrompere o consentire il traffico in entrata. Scegliere Procedere per continuare." + +msgid "Proceed" +msgstr "Procedere" msgid "Apply changes" -msgstr "" +msgstr "Applica le modifiche" + +msgid "Dynamic DNS" +msgstr "DNS dinamico" + +msgid "Service provider" +msgstr "Fornitore di servizi" + +msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." +msgstr "Selezionare un servizio DNS dinamico supportato da ddclient dall'elenco sottostante. Selezionando un fornitore di servizi noto, i campi del protocollo e del server verranno compilati. È possibile anche configurare il servizio manualmente." + +msgid "Method to obtain IP" +msgstr "Metodo per ottenere l'IP" + +msgid "Select the method used by ddclient to obtain an IP address. This value is specified in the -use option." +msgstr "Selezionare il metodo utilizzato da ddclient per ottenere un indirizzo IP. Questo valore è specificato nell'opzione -use." + +msgid "Discovery page on the web" +msgstr "Pagina di scoperta sul web" + +msgid "Network interface" +msgstr "Interfaccia di rete" + +msgid "Network address" +msgstr "Indirizzo di rete" + +msgid "Firewall status page" +msgstr "Pagina di stato del firewall" + +msgid "External command" +msgstr "Comando esterno" + +msgid "Web address" +msgstr "Indirizzo web" + +msgid "Firewall" +msgstr "Firewall" + +msgid "Command" +msgstr "Comando" + +msgid "Example: 192.168.1.254/status.htm." +msgstr "Esempio: 192.168.1.254/status.htm." + +msgid "Example: /usr/local/bin/get-ip." +msgstr "Esempio: /usr/local/bin/get-ip." + +msgid "Domain" +msgstr "Dominio" + +msgid "Enable SSL" +msgstr "Abilita SSL" + +msgid "Use an encrypted SSL connection for updates. Not supported by all providers." +msgstr "Utilizzare una connessione SSL crittografata per gli aggiornamenti. Non supportato da tutti i provider." + +msgid "Value specified in milliseconds (ms). Default is 300." +msgstr "Valore specificato in millisecondi (ms). Il valore predefinito è 300." + +msgid "Use the Generate log button to output detailed ddclient daemon debug info" +msgstr "Utilizzare il pulsante Genera registro per produrre informazioni dettagliate sul debug del demone ddclient" + +msgid "Generate log" +msgstr "Generare un log" + +msgid "Information provided by ddclient" +msgstr "Informazioni fornite da ddclient" + +msgid "Start Dynamic DNS" +msgstr "Avvio del DNS dinamico" + +msgid "Stop Dynamic DNS" +msgstr "Arresto del DNS dinamico" + +msgid "Restart Dynamic DNS" +msgstr "Riavviare il DNS dinamico" + +msgid "Account details" +msgstr "Dettagli dell'account" + +msgid "My account" +msgstr "Il mio account" + +msgid "Server location" +msgstr "Posizione del server" + +msgid "Choosing Save settings will connect to the selected country." +msgstr "Scegliendo Salva impostazioni ci si connette al paese selezionato." + +msgid "Choosing Connect %s will connect to a recommended server." +msgstr "Scegliendo Connect %s ci si connetterà a un server consigliato." + +msgid "Select a country from the server location list" +msgstr "Selezionare un paese dall'elenco della posizione del server" + +msgid "Select a country..." +msgstr "Seleziona la nazione..." + +msgid "Account information not available from %s's Linux CLI." +msgstr "Informazioni sull'account non disponibili dalla CLI Linux di %s." + +msgid "Attempting to connect to %s" +msgstr "Tentativo di connessione a %s" + +msgid "Attempting to connect VPN provider" +msgstr "Tentativo di connessione al provider VPN" + +msgid "Attempting to disconnect VPN provider" +msgstr "Tentativo di disconnessione del provider VPN" + +msgid "Expected %s binary not found at: %s" +msgstr "Il binario atteso %s non è stato trovato in: %s" + +msgid "Visit the installation instructions for %s's Linux CLI." +msgstr "Visitare le istruzioni per l'installazione della CLI Linux di %s." + +msgid "Unable to execute %s binary found at: %s" +msgstr "Impossibile eseguire il binario %s trovato a: %s" + +msgid "Check that binary is executable and permissions exist in raspap.sudoers" +msgstr "Verificare che il binario sia eseguibile e che i permessi esistano in raspap.sudoers" + +msgid "Installed Linux CLI: %s" +msgstr "CLI Linux installata: %s" + +msgid "Current %s connection status is displayed below." +msgstr "Lo stato attuale %s stato della connessione è visualizzato di seguito." + +msgid "Information provided by %s" +msgstr "Informazioni fornite da %s" + +msgid "Connect %s" +msgstr "Collegare %s" + +msgid "Disconnect %s" +msgstr "Disconnessione %s" + +msgid "About" +msgstr "Informazioni su" + +msgid "Insiders" +msgstr "Insider" + +msgid "Contributing" +msgstr "Contribuente" + +msgid "Check for update" +msgstr "Controllo dell'aggiornamento" + +msgid "New release check in progress..." +msgstr "Controllo del nuovo rilascio in corso..." + +msgid "A new release is available: Version" +msgstr "È disponibile una nuova versione: Versione" + +msgid "Installed version is the latest release." +msgstr "La versione installata è l'ultima versione." + +msgid "GitHub authentication" +msgstr "Autenticazione GitHub" + +msgid "Updating Insiders requires GitHub authentication." +msgstr "L'aggiornamento degli Insider richiede l'autenticazione a GitHub." + +msgid "Your credentials will be sent to GitHub securely with SSL. However, use caution if your RaspAP install is on a WLAN shared by untrusted users." +msgstr "Le credenziali saranno inviate a GitHub in modo sicuro con SSL. Tuttavia, occorre fare attenzione se l'installazione di RaspAP si trova su una rete WLAN condivisa da utenti non fidati." + +msgid "Personal Access Token" +msgstr "Gettone di accesso personale" + +msgid "Please provide a valid token." +msgstr "Fornire un token valido." + +msgid "Perform update" +msgstr "Eseguire l'aggiornamento" + +msgid "Update in progress" +msgstr "Aggiornamento in corso" + +msgid "Application is being updated..." +msgstr "L'applicazione è in fase di aggiornamento..." + +msgid "Configuring update" +msgstr "Aggiornamento della configurazione" + +msgid "Updating sources" +msgstr "Aggiornamento delle fonti" + +msgid "Installing package updates" +msgstr "Installazione degli aggiornamenti dei pacchetti" + +msgid "Downloading latest files" +msgstr "Scaricare i file più recenti" + +msgid "Installing application" +msgstr "Installazione dell'applicazione" + +msgid "Update complete" +msgstr "Aggiornamento completato" + +msgid "An error occurred. Check the log at /tmp/raspap_install.log" +msgstr "Si è verificato un errore. Controllare il registro in /tmp/raspap_install.log" + +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP è una co-creazione di %1$s e %2$s con i contributi dei nostri %3$s e %4$s. Per saperne di più sull'adesione al progetto come %5$s, %6$s o %7$s con accesso immediato a %8$s disponibile a %9$s." + +msgid "developer community" +msgstr "comunità di sviluppatori" + +msgid "language translators" +msgstr "traduttori di lingua" + +msgid "code contributor" +msgstr "contributore del codice" + +msgid "translator" +msgstr "traduttore" + +msgid "financial sponsor" +msgstr "sponsor finanziario" + +msgid "exclusive features" +msgstr "caratteristiche esclusive" + +msgid "RaspAP Exception" +msgstr "Eccezione RaspAP" + +msgid "An exception occurred" +msgstr "Si è verificata un'eccezione" + +msgid "RestAPI" +msgstr "RestAPI" + +msgid "RestAPI settings" +msgstr "Impostazioni RestAPI" + +msgid "Start RestAPI service" +msgstr "Avviare il servizio RestAPI" + +msgid "Stop RestAPI service" +msgstr "Arresto del servizio RestAPI" + +msgid "API Key" +msgstr "Chiave API" + +msgid "Saving API key" +msgstr "Salvataggio della chiave API" + +msgid "RestAPI status" +msgstr "Stato RestAPI" + +msgid "Current restapi.service status is displayed below." +msgstr "Lo stato attuale di restapi.service è visualizzato di seguito." + +msgid "RestAPI docs are accessible here%s" +msgstr "I documenti di RestAPI sono accessibili qui%s" + +msgid "Restarting restapi.service" +msgstr "Riavvio di restapi.service" + +msgid "Information provided by restapi.service" +msgstr "Informazioni fornite da restapi.service" + +msgid "Session Expired" +msgstr "Sessione scaduta" + +msgid "Your session has expired. Please login to continue." +msgstr "La sessione è scaduta. Effettuare il login per continuare." + +msgid "Login" +msgstr "Accesso" + +msgid "Administrator login" +msgstr "Accesso amministratore" + +msgid "Forgot password" +msgstr "Password dimenticata" + +msgid "Login failed" +msgstr "Accesso fallito" + +msgid "NTP Server" +msgstr "Server NTP" + +msgid "NTP Server settings" +msgstr "Impostazioni del server NTP" + +msgid "NTP daemon" +msgstr "Demone NTP" + +msgid "Synchronized time" +msgstr "Tempo sincronizzato" + +msgid "NTP servers" +msgstr "Server NTP" + +msgid "Add an NTP server" +msgstr "Aggiungere un server NTP" + +msgid "Start NTP service" +msgstr "Avvia il servizio NTP" + +msgid "Stop NTP service" +msgstr "Arresto del servizio NTP" + +msgid "Edit mode" +msgstr "Modalità di modifica" + +msgid "Use the Edit mode toggle to manually edit the current ntp.config configuration." +msgstr "Utilizzare la modalità di modifica per modificare manualmente la configurazione corrente di ntp.config." + +msgid "Specify a public NTP server or a private one on your local network. IPv4 and IPv6 address, or a fully qualified domain name (FQDN) are acceptable values." +msgstr "Specificare un server NTP pubblico o privato sulla rete locale. L'indirizzo IPv4 e IPv6 o un nome di dominio completamente qualificato (FQDN) sono valori accettabili." + +msgid "Public NTP servers supporting Network Time Security (NTS) may be specified with the nts suffix." +msgstr "I server NTP pubblici che supportano la Network Time Security (NTS) possono essere specificati con il suffisso nts." + +msgid "Examples of valid server entries include %s, %s and %s." +msgstr "Esempi di voci valide per il server sono %s, %s e %s." + +msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." +msgstr "Lo stato attuale dei peer ntpq è visualizzato di seguito. Un asterisco(*) indica il server preferito." + +msgid "NTP configuration cannot be empty" +msgstr "La configurazione NTP non può essere vuota" + +msgid "Restarting ntpd.service" +msgstr "Riavvio di ntpd.service" + +msgid "Please enter a valid NTP server" +msgstr "Inserire un server NTP valido" + +msgid "Attempting to start ntp.service" +msgstr "Tentativo di avviare ntp.service" + +msgid "Attempting to stop ntp.service" +msgstr "Tentativo di fermare ntp.service" + +msgid "NTP configuration not found at %s" +msgstr "Configurazione NTP non trovata in %s" + +msgid "NTP configuration updated" +msgstr "Configurazione NTP aggiornata" + +msgid "Advertising device as a Tailscale exit node" +msgstr "Pubblicità del dispositivo come nodo di uscita Tailscale" + +msgid "Attempting to optimize UDP throughput" +msgstr "Tentativo di ottimizzare il throughput UDP" + +msgid "Kernel transport layer offloads enabled for UDP" +msgstr "Offload del livello di trasporto del kernel abilitato per UDP" + +msgid "Failed to enable kernel transport layer offloads for UDP" +msgstr "Non è stato possibile abilitare gli offload del livello di trasporto del kernel per UDP" + +msgid "Attempting to set tailscale up" +msgstr "Tentativo di impostare la scala di coda" + +msgid "Attempting to set tailscale down" +msgstr "Tentativo di impostare la scala di coda in basso" + +msgid "Attempting to disconnect from tailscale" +msgstr "Tentativo di disconnessione da tailscale" + +msgid "Disconnected from tailscale and expired node key" +msgstr "Disconnessione da tailscale e chiave del nodo scaduta" + +msgid "Unable to disconnect from tailscale" +msgstr "Impossibile disconnettersi da tailscale" + +msgid "Expected tailscale binary not found at: %" +msgstr "Il binario tailscale atteso non è stato trovato in: %" + +msgid "A Tailscale VPN exit node extension for RaspAP" +msgstr "Un'estensione del nodo di uscita della VPN Tailscale per RaspAP" + +msgid "Unable to retrieve Tailscale login. Choose %s to continue." +msgstr "Impossibile recuperare il login di Tailscale. Scegliere %s per continuare." + +msgid "Start Tailscale" +msgstr "Inizio della scala delle code" + +msgid "Stop Tailscale" +msgstr "Interrompi Tailscale" + +msgid "Next" +msgstr "Avanti" + +msgid "Device approved and activated as a Tailscale exit node" +msgstr "Dispositivo approvato e attivato come nodo di uscita Tailscale" + +msgid "Not connected: Login required." +msgstr "Non connesso: Accesso richiesto." + +msgid "Tailscale VPN" +msgstr "Tailscale VPN" + +msgid "Exit node activated" +msgstr "Nodo di uscita attivato" + +msgid "The device %s is connected with the address %s and offers an exit node." +msgstr "Il dispositivo %s è collegato con l'indirizzo %s e offre un nodo di uscita." + +msgid "See the %s on how to use this exit node with your devices." +msgstr "Vedere il sito %s su come utilizzare questo nodo di uscita con i propri dispositivi." + +msgid "Allow exit node" +msgstr "Consentire il nodo di uscita" + +msgid "The device %s is pending approval as an exit node." +msgstr "Il dispositivo %s è in attesa di approvazione come nodo di uscita." + +msgid "Locate the %s Exit Node badge in the machines list." +msgstr "Individuare il badge %s Exit Node nell'elenco delle macchine." + +msgid "Open Tailscale Machines" +msgstr "Macchine Tailscale aperte" + +msgid "To allow this device as an exit node, choose Open Tailscale Machines." +msgstr "Per consentire l'utilizzo di questo dispositivo come nodo di uscita, scegliere Apri macchine Tailscale." + +msgid "From the %s icon menu of the exit node, open the %s panel." +msgstr "Dal menu dell'icona %s del nodo di uscita, aprire il pannello %s." + +msgid "Edit route settings" +msgstr "Modifica delle impostazioni del percorso" + +msgid "Login to Tailscale" +msgstr "Accesso a Tailscale" + +msgid "To connect device %s to your tailnet, choose %s." +msgstr "Per collegare il dispositivo %s alla propria tailnet, scegliere %s." + +msgid "After logging in, choose Next to continue." +msgstr "Dopo l'accesso, scegliere Avanti per continuare." + +msgid "Configure exit node" +msgstr "Configurare il nodo di uscita" + +msgid "The device %s is connected to your tailnet with the address %s." +msgstr "Il dispositivo %s è collegato alla tailnet con l'indirizzo %s." + +msgid "By default, Tailscale only routes traffic between the devices on which it's been installed. You can also route all your public internet traffic by configuring a device on your network as a exit node" +msgstr "Per impostazione predefinita, Tailscale instrada il traffico solo tra i dispositivi su cui è stato installato. È anche possibile instradare tutto il traffico Internet pubblico configurando un dispositivo della rete come nodo di uscita." + +msgid "When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN." +msgstr "Quando si instrada tutto il traffico attraverso un nodo di uscita, si utilizzano effettivamente le rotte predefinite (0.0.0.0/0, ::/0), in modo simile a come si farebbe con una tipica VPN." + +msgid "You have the option of configuring this device as an exit node, or using another exit node in your tailnet." +msgstr "È possibile configurare questo dispositivo come nodo di uscita o utilizzare un altro nodo di uscita nella tailnet." + +msgid "Select an existing exit node on your tailnet" +msgstr "Selezionare un nodo di uscita esistente sulla propria tailnet" + +msgid "This is a typical configuration if you're using this device as a VPN travel router, for example." +msgstr "Questa è una configurazione tipica se si utilizza il dispositivo come router VPN da viaggio, ad esempio." + +msgid "Configure this device as a new exit node" +msgstr "Configurare questo dispositivo come nuovo nodo di uscita" + +msgid "By configuring this device as an exit node, public internet traffic from devices connected in your tailnet will be routed through it." +msgstr "Configurando questo dispositivo come nodo di uscita, il traffico Internet pubblico proveniente dai dispositivi collegati alla tailnet verrà instradato attraverso di esso." + +msgid "For security reasons, you must opt in to enable exit node functionality. The first step is to advertise %s as an exit node in your tailnet. In the next step, you'll allow this device to be an exit node." +msgstr "Per motivi di sicurezza, è necessario effettuare l'opt-in per abilitare la funzionalità del nodo di uscita. Il primo passo è pubblicizzare %s come nodo di uscita nella tailnet. Nel passo successivo, si consentirà a questo dispositivo di essere un nodo di uscita." + +msgid "Advertise %s as an exit node" +msgstr "Pubblicizza %s come nodo di uscita" + +msgid "This effectively configures Tailscale as a VPN to mask your real location, access region-restricted content, or enhance privacy when connecting from untrusted networks." +msgstr "Questo configura efficacemente Tailscale come una VPN per mascherare la propria posizione reale, accedere a contenuti con restrizioni regionali o migliorare la privacy quando ci si connette da reti non affidabili." + +msgid "This option lets Tailscale know your device is ready to route traffic." +msgstr "Questa opzione consente a Tailscale di sapere che il dispositivo è pronto a instradare il traffico." + +msgid "Recommended for Tailscale exit nodes with Linux 6.2 or later kernels, this uses UDP generic receive offload (GRO) forwarding to reduce CPU overhead." +msgstr "Consigliato per i nodi di uscita Tailscale con kernel Linux 6.2 o successivi, utilizza l'inoltro UDP generic receive offload (GRO) per ridurre l'overhead della CPU." + +msgid "This option enables transport layer offloads for better performance." +msgstr "Questa opzione abilita l'offload del livello di trasporto per migliorare le prestazioni." + +msgid "Select an exit node" +msgstr "Selezionare un nodo di uscita" + +msgid "To use %s as a VPN gateway, configure Tailscale to use an exit node. Tailscale's suggested node is indicated with a star." +msgstr "Per utilizzare %s come gateway VPN, configurare Tailscale per utilizzare un nodo di uscita. Il nodo suggerito da Tailscale è indicato con una stella." + +msgid "Advertise a subnet route for the active %s AP interface" +msgstr "Pubblicizza una rotta di sottorete per l'interfaccia %s interfaccia AP attiva" + +msgid "Subnet routes let you extend your Tailscale network (known as a tailnet) to include devices that don't or can't run the Tailscale client." +msgstr "Le rotte di sottorete consentono di estendere la rete Tailscale (nota come tailnet) per includere dispositivi che non eseguono o non possono eseguire il client Tailscale." + +msgid "A subnet route acts as a gateway between your tailnet and a physical subnet. The subnet of the active AP interface is preconfigured below; edit if necessary." +msgstr "Una rotta di sottorete funge da gateway tra la tailnet e una sottorete fisica. La sottorete dell'interfaccia AP attiva è preconfigurata di seguito; modificarla se necessario." + +msgid "Route LAN traffic through the exit node." +msgstr "Instrada il traffico LAN attraverso il nodo di uscita." + +msgid "This will direct all LAN traffic to go through your exit node only." +msgstr "Questo dirige tutto il traffico LAN a passare solo attraverso il nodo di uscita." + +msgid "Choose Next to configure %s to use the selected exit node with these options." +msgstr "Scegliere Avanti per configurare %s per utilizzare il nodo di uscita selezionato con queste opzioni." + +msgid "No exit nodes found on your tailnet. Choose Back to continue." +msgstr "Non sono stati trovati nodi di uscita nella tailnet. Scegliere Indietro per continuare." + +msgid "Using exit node" +msgstr "Utilizzo del nodo exit" + +msgid "The device %s is configured to use exit node %s. It has the Tailscale MagicDNS address %s." +msgstr "Il dispositivo %s è configurato per utilizzare il nodo di uscita %s. Dispone dell'indirizzo Tailscale MagicDNS %s." + +msgid "Choose Save settings to continue." +msgstr "Scegliere Salva impostazioni per continuare." + +msgid "Choose Next to continue." +msgstr "Scegliere Salva impostazioni per continuare." + +msgid "Tailnet status" +msgstr "Stato di Tailnet" + +msgid "Current tailnet status is displayed below." +msgstr "Lo stato attuale di tailnet è visualizzato di seguito." + +msgid "Use Tailscale DNS settings (default)." +msgstr "Usa le impostazioni DNS di Tailscale (impostazione predefinita)." + +msgid "Uncheck to use local DNS. This sets --accept-dns=false." +msgstr "Deselezionare per utilizzare il DNS locale. Questo imposta --accept-dns=false." + +msgid "Do not use Tailscale subnets (default on Linux)." +msgstr "Non utilizzare le sottoreti Tailscale (default su Linux)." + +msgid "If subnet routes exist for your tailnet, you can route your device's traffic to a subnet router. Enabling this sets --accept-routes=true." +msgstr "Se esistono rotte di sottorete per la tailnet, è possibile instradare il traffico del dispositivo verso un router di sottorete. Abilitando questa opzione, si imposta --accept-routes=true." + +msgid "If keys expire for a device, connections to/from the given endpoint will stop working." +msgstr "Se le chiavi scadono per un dispositivo, le connessioni da/verso l'endpoint indicato smetteranno di funzionare." + +msgid "This option uses --force-reauth to renew the keys for this device." +msgstr "Questa opzione utilizza --force-reauth per rinnovare le chiavi per questo dispositivo." + +msgid "Start capture" +msgstr "Inizio cattura" + +msgid "Stop capture" +msgstr "Ferma Cattura" + +msgid "Capture files" +msgstr "File di cattura" + +msgid "Capture interface" +msgstr "Interfaccia di cattura" + +msgid "Output file" +msgstr "File di output" + +msgid "Path where capture file will be saved (.pcap format)" +msgstr "Percorso in cui verrà salvato il file di cattura (formato .pcap)" + +msgid "File will be saved with .pcap extension" +msgstr "Il file verrà salvato con estensione .pcap" + +msgid "Capture filter (BPF syntax)" +msgstr "Filtro di cattura (sintassi BPF)" + +msgid "Berkeley Packet Filter syntax. Leave empty to capture all traffic." +msgstr "Sintassi del filtro dei pacchetti Berkeley. Lasciare vuoto per catturare tutto il traffico." + +msgid "Examples: port 80, host 192.168.1.1, tcp and not port 22" +msgstr "Esempi: port 80, host 192.168.1.1, tcp and not port 22" + +msgid "Capture limits" +msgstr "Limiti di cattura" + +msgid "Packet count limit" +msgstr "Limite del numero di pacchetti" + +msgid "Stop capture after this many packets. Leave empty for unlimited." +msgstr "Interrompe la cattura dopo questo numero di pacchetti. Lasciare vuoto per non avere limiti." + +msgid "Duration limit (seconds)" +msgstr "Limite di durata (secondi)" + +msgid "Stop capture after this many seconds. Leave empty for unlimited." +msgstr "Interrompere l'acquisizione dopo questo numero di secondi. Lasciare vuoto per non avere limiti." + +msgid "Ring buffer settings" +msgstr "Impostazioni del buffer ad anello" + +msgid "File size (KB)" +msgstr "Dimensione del file (KB)" + +msgid "Create new file when this size is reached. Leave empty to disable." +msgstr "Crea un nuovo file quando viene raggiunta questa dimensione. Lasciare vuoto per disabilitare." + +msgid "10000 = 10 MB per file" +msgstr "10000 = 10 MB per file" + +msgid "Number of files" +msgstr "Numero di file" + +msgid "Maximum number of ring buffer files to keep. Oldest files are deleted." +msgstr "Numero massimo di file del ring buffer da mantenere. I file più vecchi vengono eliminati." + +msgid "Advanced options" +msgstr "Opzioni avanzate" + +msgid "Snapshot length (bytes)" +msgstr "Lunghezza dell'istantanea (byte)" + +msgid "Limit the amount of data captured per packet. Leave empty for full packets." +msgstr "Limita la quantità di dati catturati per pacchetto. Lasciare vuoto per i pacchetti completi." + +msgid "96 bytes captures headers only, reduces file size" +msgstr "96 byte cattura solo le intestazioni, riducendo le dimensioni del file" + +msgid "Promiscuous mode" +msgstr "Modalità promiscua" + +msgid "Capture all packets on the network segment, not just those destined for this interface" +msgstr "Cattura tutti i pacchetti sul segmento di rete, non solo quelli destinati a questa interfaccia" + +msgid "Quick filter presets" +msgstr "Preimpostazioni del filtro rapido" + +msgid "Capture files generated by tshark are displayed below." +msgstr "I file di cattura generati da tshark sono visualizzati di seguito." + +msgid "No capture files found in /tmp directory" +msgstr "Nessun file di cattura trovato nella directory /tmp" + +msgid "Filename" +msgstr "Nome del file" + +msgid "Size" +msgstr "Dimensione" + +msgid "Modified" +msgstr "Modificato" + +msgid "Actions" +msgstr "Azioni" + +msgid "Download file" +msgstr "Scarica il file" + +msgid "Delete file" +msgstr "Cancellare il file" + +msgid "Confirm deletion" +msgstr "Conferma l'eliminazione" + +msgid "Are you sure you want to delete this file?" +msgstr "Siete sicuri di voler eliminare questo file?" + +msgid "All Traffic" +msgstr "Tutto il traffico" + +msgid "HTTP/HTTPS" +msgstr "HTTP/HTTPS" + +msgid "ICMP (Ping)" +msgstr "ICMP (Ping)" + +msgid "SSH" +msgstr "SSH" + +msgid "Exclude SSH" +msgstr "Escludi SSH" + +msgid "A Wireshark (TShark) CLI packet capture for RaspAP" +msgstr "Una cattura di pacchetti CLI di Wireshark (TShark) per RaspAP" + +msgid "Information provided by tshark" +msgstr "Informazioni fornite da tshark" + +msgid "Total: %d file(s), %s" +msgstr "Totale: %d file, %s" + +msgid "Captive portal" +msgstr "Captive portal" + +msgid "Gateway interface" +msgstr "Interfaccia del gateway" + +msgid "Gateway name" +msgstr "Nome del gateway" + +msgid "Gateway address" +msgstr "Indirizzo del gateway" + +msgid "Gateway port" +msgstr "Porta del gateway" + +msgid "Defaults to the active AP interface, typically wlan0" +msgstr "Per impostazione predefinita, l'interfaccia attiva dell'AP, in genere wlan0" + +msgid "Auto-detected from gateway interface if not specified" +msgstr "Rilevato automaticamente dall'interfaccia del gateway se non è specificato" + +msgid "Start portal" +msgstr "Inizio portale" + +msgid "Stop portal" +msgstr "Portale di arresto" + +msgid "Information provided by nodogsplash" +msgstr "Informazioni fornite da nodogsplash" + +msgid "Stop portal service" +msgstr "Arresto del servizio del portale" + +msgid "Start portal service" +msgstr "Avvia il servizio del portale" + +msgid "Changing the portal service will momentarily disrupt client traffic. Choose Proceed to continue." +msgstr "La modifica del servizio del portale interromperà momentaneamente il traffico dei client. Scegliere Procedere per continuare." + +msgid "Interface to be managed by the portal" +msgstr "Interfaccia che deve essere gestita dal portale" + +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "Nome del gateway (disponibile come variabile \\$gatewayname)" + +msgid "IP address of the router. Leave empty for auto-detection" +msgstr "Indirizzo IP del router. Lasciare vuoto per il rilevamento automatico" + +msgid "Port for Nodogsplash HTTP server" +msgstr "Porta del server HTTP di Nodogsplash" + +msgid "Maximum clients" +msgstr "Clienti massimi" + +msgid "Session timeout (minutes)" +msgstr "Timeout della sessione (minuti)" + +msgid "Pre-auth idle timeout (minutes)" +msgstr "Timeout di inattività pre-autenticazione (minuti)" + +msgid "Does not include users on the trusted MAC list" +msgstr "Non include gli utenti nell'elenco dei MAC attendibili" + +msgid "Auth idle timeout (minutes)" +msgstr "Timeout di inattività dell'autorizzazione (minuti)" + +msgid "Check interval (seconds)" +msgstr "Intervallo di controllo (secondi)" + +msgid "MAC address control" +msgstr "Controllo dell'indirizzo MAC" + +msgid "MAC mechanism" +msgstr "Meccanismo MAC" + +msgid "Blocked MAC list" +msgstr "Elenco dei MAC bloccati" + +msgid "Trusted MAC list" +msgstr "Elenco dei MAC affidabili" + +msgid "These devices are not subject to authentication or firewall rules" +msgstr "Questi dispositivi non sono soggetti a regole di autenticazione o di firewall" + +msgid "Maximum number of concurrent authenticated users" +msgstr "Numero massimo di utenti autenticati contemporanei" + +msgid "Default session length in minutes. 0 = unlimited" +msgstr "Durata predefinita della sessione in minuti. 0 = illimitata" + +msgid "Time before unauthenticated idle users are removed" +msgstr "Tempo prima della rimozione degli utenti inattivi non autenticati" + +msgid "Time before authenticated idle users are deauthenticated" +msgstr "Tempo prima che gli utenti inattivi autenticati siano deautenticati" + +msgid "How often to check client timeouts" +msgstr "Con quale frequenza controllare i timeout del client" + +msgid "Block: blocklisted MACs are blocked. Allow: only allowlisted MACs are allowed" +msgstr "Block: i MAC in elenco sono bloccati. Consenti: sono consentiti solo i MAC inseriti nell'elenco dei consentiti" + +msgid "Example: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" +msgstr "Esempio: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" + +msgid "Comma-separated MAC addresses that bypass authentication entirely" +msgstr "Indirizzi MAC separati da virgola che aggirano completamente l'autenticazione" + +msgid "Block (blocklist mode)" +msgstr "Blocco (modalità blocklist)" + +msgid "Allow (allowlist mode)" +msgstr "Consenti (modalità allowlist)" + +msgid "Gateway IP range" +msgstr "Intervallo IP del gateway" + +msgid "Default: 0.0.0.0/0 (all addresses)" +msgstr "Predefinito: 0.0.0.0/0 (tutti gli indirizzi)" + +msgid "Debug level" +msgstr "Livello di debug" + +msgid "Firewall settings" +msgstr "Impostazioni firewall" + +msgid "Allow all traffic for authenticated users" +msgstr "Consenti tutto il traffico per gli utenti autenticati" + +msgid "Allow DNS for pre-authenticated users" +msgstr "Consentire il DNS per gli utenti pre-autenticati" + +msgid "IP range to manage in CIDR notation. Leave empty for all addresses" +msgstr "Intervallo IP da gestire in notazione CIDR. Lasciare vuoto per tutti gli indirizzi" + +msgid "Amount of logging detail reported by the nodogsplash.service" +msgstr "Quantità di dettagli di registrazione riportati dal servizio nodogsplash.service" + +msgid "0 - Errors only" +msgstr "0 - Solo errori" + +msgid "1 - Errors, warnings, infos" +msgstr "1 - Errori, avvertimenti, informazioni" + +msgid "2 - Errors, warnings, infos, verbose" +msgstr "2 - Errori, avvertimenti, informazioni, verbose" + +msgid "3 - Errors, warnings, infos, verbose, debug" +msgstr "3 - Errori, avvisi, informazioni, verbose, debug" + +msgid "When enabled, authenticated users have unrestricted access" +msgstr "Quando è abilitato, gli utenti autenticati hanno un accesso illimitato" + +msgid "Required for clients to resolve domain names before authentication" +msgstr "Richiesto ai client per risolvere i nomi di dominio prima dell'autenticazione" + +msgid "Portal status" +msgstr "Stato del portale" + +msgid "Current nodogsplash status is displayed below." +msgstr "Lo stato attuale di nodogsplash è visualizzato di seguito." diff --git a/locale/ja_JP/LC_MESSAGES/messages.mo b/locale/ja_JP/LC_MESSAGES/messages.mo index 4cfd1047..60957a7f 100644 Binary files a/locale/ja_JP/LC_MESSAGES/messages.mo and b/locale/ja_JP/LC_MESSAGES/messages.mo differ diff --git a/locale/ja_JP/LC_MESSAGES/messages.po b/locale/ja_JP/LC_MESSAGES/messages.po index f7ed861f..1eff14b4 100644 --- a/locale/ja_JP/LC_MESSAGES/messages.po +++ b/locale/ja_JP/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2024-09-27 06:54\n" +"PO-Revision-Date: 2025-11-20 12:20\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -24,8 +24,8 @@ msgstr "RaspAP Wifi設定ポータル" msgid "Toggle navigation" msgstr "ナビゲーションを切り替え" -msgid "RaspAP Wifi Portal" -msgstr "RaspAP Wifiポータル" +msgid "RaspAP Admin Panel" +msgstr "RaspAP 管理パネル" msgid "Dashboard" msgstr "ダッシュボード" @@ -33,9 +33,15 @@ msgstr "ダッシュボード" msgid "WiFi client" msgstr "WiFiクライアント" +msgid "Status" +msgstr "ステータス" + msgid "Hotspot" msgstr "ホットスポット" +msgid "Logging" +msgstr "ロギング" + msgid "Mem Use" msgstr "メモリ使用率" @@ -57,9 +63,6 @@ msgstr "TORプロキシ" msgid "Authentication" msgstr "認証を構成する" -msgid "Change Theme" -msgstr "テーマを変更" - msgid "System" msgstr "システム" @@ -100,6 +103,9 @@ msgstr "新しいパスワードを繰り返す" msgid "Please provide a valid username." msgstr "有効なユーザー名を入力してください。" +msgid "Please provide a valid password." +msgstr "有効なパスワードを入力してください。" + msgid "Please enter your old password." msgstr "元のパスワードを入力してください。" @@ -121,6 +127,42 @@ msgstr "JPG、GIF、PNG の画像ファイルを使用できます msgid "Reset avatar" msgstr "アバターをリセット" +msgid "Enable limited privilege user" +msgstr "限定特権ユーザを有効にする" + +msgid "This option enables a non-admin user who can access RaspAP's management interface, but has limited ability to modify the existing configuration. This user becomes active when the current admin user is logged-out." +msgstr "このオプションは、ラズパップの管理インターフェースにアクセスできるが、既存のコンフィギュレーションを変更する能力が制限されている非管理ユーザーを有効にする。このユーザは、現在の管理ユーザがログアウトしたときにアクティブになります。" + +msgid "Admin login failed. Please try again." +msgstr "管理者ログインに失敗しました。再試行してください。" + +msgid "Limited privilege user mode enabled" +msgstr "限定特権ユーザーモードが有効" + +msgid "Failed to enable limited privilege user mode" +msgstr "限定特権ユーザモードの有効化に失敗しました" + +msgid "Logout and enable limited user mode" +msgstr "ログアウトして限定ユーザモードを有効にする" + +msgid "Limited user login" +msgstr "ユーザーログインの制限" + +msgid "Limited user password" +msgstr "限定ユーザのパスワード" + +msgid "This action will save the limited user's credentials and logout the current admin user. Save and enable limited privilege mode?" +msgstr "このアクションは限定ユーザの認証情報を保存し、現在の管理ユーザをログアウトさせます。限定特権モードを保存して有効にしますか?" + +msgid "Save and logout" +msgstr "保存とログアウト" + +msgid "Admin credentials updated successfully" +msgstr "管理者認証情報の更新に成功" + +msgid "Limited user credentials updated successfully" +msgstr "限定ユーザの認証情報が正常に更新されました" + #: includes/configure_client.php msgid "Client settings" msgstr "クライアントの設定" @@ -255,8 +297,8 @@ msgstr "頻度" msgid "Link Quality" msgstr "リンク品質" -msgid "Information provided by ip and iw and from system" -msgstr "ipおよびiwおよびシステムから提供される情報" +msgid "Information provided by raspap.system" +msgstr "raspap.systemが提供する情報" msgid "No MAC Address Found" msgstr "MACアドレスが見つかりません" @@ -294,6 +336,9 @@ msgstr "接続されたデバイス" msgid "Client: Ethernet cable" msgstr "クライアント: イーサネットケーブル" +msgid "Current status" +msgstr "現在の状態" + msgid "Ethernet" msgstr "イーサネット" @@ -306,6 +351,43 @@ msgstr "スマートフォン" msgid "WiFi" msgstr "WiFi" +msgid "Repeater" +msgstr "リピーター" + +msgid "Tethering" +msgstr "テザリング" + +msgid "Cellular" +msgstr "セルラー" + +msgid "AP" +msgstr "AP" + +msgid "Bridged" +msgstr "ブリッジ" + +msgid "Adblock" +msgstr "アドブロック" + +msgid "VPN" +msgstr "VPN" + +msgid "Netmask" +msgstr "ネットマスク" + +msgid "5G" +msgstr "5G" + +msgid "2.4G" +msgstr "2.4G" + +msgid "%d WLAN %s" +msgstr "%d WLAN %s" + +msgid "client" +msgid_plural "clients" +msgstr[0] "クライアント" + msgid "Mobile Data Client" msgstr "モバイルデータ クライアント" @@ -336,9 +418,6 @@ msgstr "電波の品質" msgid "WAN IP" msgstr "WAN IP" -msgid "Web-GUI" -msgstr "Web-GUI" - msgid "Signal strength" msgstr "電波強度" @@ -348,10 +427,41 @@ msgstr "クライアントデバイスがないか、まだ設定されていま msgid "No Client device found" msgstr "クライアントデバイスが見つかりません" +#: includes/footer.php +msgid "Created by the %s" +msgstr "によって作成された %s" + +msgid "RaspAP Team" +msgstr "RaspAP チーム" + +msgid "Get Insiders" +msgstr "インサイダーを取得" + +msgid "Thanks for being an Insider" +msgstr "インサイダーになってくれてありがとう" + #: includes/dhcp.php msgid "DHCP server settings" msgstr "DHCPサーバーの設定" +msgid "Default gateway" +msgstr "デフォルトゲートウェイ" + +msgid "Install a default route for this interface" +msgstr "このインターフェイスのデフォルトルートをインストールする" + +msgid "Static IP options" +msgstr "静的 IP オプション" + +msgid "DHCP options" +msgstr "DHCP オプション" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "選択したインターフェイスのクライアントに IP アドレスを割り当てる場合は、このオプションを有効にします。このオプションには静的 IP アドレスが必要です。" + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "デバイスがインターネットへのプライマリルートとしてこのインターフェイスを使う場合のみ、これを有効にする。" + msgid "Client list" msgstr "クライアントリスト" @@ -476,7 +586,7 @@ msgid "Limit network access to static clients" msgstr "ネットワークへのアクセスを静的クライアントに制限" msgid "Enable this option if you want RaspAP to ignore any clients which are not specified in the static leases list." -msgstr "" +msgstr "静的リースリストに指定されていないクライアントをラズパップに無視させたい場合は、このオプションを有効にします。" msgid "This option adds dhcp-ignore to the dnsmasq configuration." msgstr "このオプションは、 dhcp-ignore をdnsmasq 構成に追加します。" @@ -487,11 +597,11 @@ msgstr "指定のMACアドレスを持つクライアントは、常に同じIP msgid "This option adds dhcp-host entries to the dnsmasq configuration." msgstr "このオプションは、 dhcp-host エントリをdnsmasq 構成に追加します。" -msgid "This toggles the gateway/nogateway option for this interface in the DHCPCD configuration." -msgstr "これは、DHCPCD 構成でこのインターフェイスの gatewaynogateway を切り替えます。" +msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." +msgstr "dhcpcd.conf ファイルで、このインターフェイスのgateway/nogatewayオプションを切り替える。" -msgid "This toggles the nohook wpa_supplicant option for this interface in the DHCPCD configuration." -msgstr "これは、DHCPCD 設定でこのインターフェイスの nohook wpa_supplicant オプションを切り替えます。" +msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." +msgstr "このオプションは、dhcpcd.conf ファイルのこのインターフェイスのnohook wpa_supplicantオプションを切り替える。" msgid "Disable wpa_supplicant dhcp hook for this interface" msgstr "このインターフェイスの wpa_supplicant dhcp フックを無効にする" @@ -500,43 +610,43 @@ msgid "If you manage wireless connections with wpa_supplicant itself, the hook m msgstr "wpa_supplicantでワイヤレス接続を管理する場合、フックは不要な接続イベントを作成することがあります。このオプションはフックを無効にします。" msgid "Please provide a valid IP Address." -msgstr "" +msgstr "有効な IP アドレスを入力してください。" msgid "Please provide a valid Default gateway." -msgstr "" +msgstr "有効なデフォルトゲートウェイを指定してください。" msgid "Please provide a valid Starting IP Address." -msgstr "" +msgstr "有効な開始IPアドレスを入力してください。" msgid "Please provide a valid Ending IP Address." -msgstr "" +msgstr "有効な終了 IP アドレスを入力してください。" msgid "Please provide a valid Lease Time." -msgstr "" +msgstr "有効なリース時間を入力してください。" msgid "Invalid interface name." -msgstr "" +msgstr "無効なインターフェース名です。" msgid "Invalid static IP address." -msgstr "" +msgstr "無効な静的 IP アドレス。" msgid "Invalid default gateway." -msgstr "" +msgstr "無効なデフォルトゲートウェイ。" msgid "Invalid DHCP range start." -msgstr "" +msgstr "無効な DHCP 範囲の開始。" msgid "Invalid DHCP range end." -msgstr "" +msgstr "無効な DHCP 範囲の終了。" msgid "Invalid DHCP lease time, not a number." -msgstr "" +msgstr "無効な DHCP リース時間。" msgid "Unknown DHCP lease time unit." -msgstr "" +msgstr "不明な DHCP リース時間単位。" msgid "Invalid metric value, not a number." -msgstr "" +msgstr "無効なメトリック値です。" #: includes/hostapd.php msgid "Basic" @@ -561,7 +671,7 @@ msgid "Encryption Type" msgstr "暗号化の種類" msgid "Pre-shared key (PSK)" -msgstr "" +msgstr "事前共有鍵 (PSK)" msgid "Advanced settings" msgstr "高度な設定" @@ -597,25 +707,25 @@ msgid "Country code must be blank or two characters" msgstr "国コードは空白または2文字でなければなりません" msgid "DHCP configuration for %s enabled." -msgstr "" +msgstr "%s の DHCP コンフィグレーションが有効になっている。" msgid "DHCP configuration for %s added." -msgstr "" +msgstr "%s の DHCP コンフィギュレーションが追加された。" msgid "DHCP configuration for %s updated." -msgstr "" +msgstr "%s の DHCP コンフィギュレーションが更新された。" msgid "Interface %s has no default settings." -msgstr "" +msgstr "インターフェース %s にはデフォルト設定はありません。" msgid "Configure settings in DHCP Server before starting AP." -msgstr "" +msgstr "AP を起動する前にDHCP サーバーの設定を行う。" msgid "Wifi hotspot settings saved." -msgstr "" +msgstr "Wifiホットスポットの設定が保存された。" msgid "Unable to save WiFi hotspot settings." -msgstr "" +msgstr "WiFi ホットスポット設定を保存できない。" msgid "Start hotspot" msgstr "ホットスポットを開始" @@ -632,6 +742,27 @@ msgstr "ロギングを有効にする" msgid "Logfile output" msgstr "ログファイル出力" +msgid "Log level" +msgstr "ログレベル" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "レベルを上げるとログの冗長性が減る。情報提供を推奨する。" + +msgid "Verbose debugging" +msgstr "詳細なデバッグ" + +msgid "Debugging" +msgstr "デバッグ" + +msgid "Informational" +msgstr "情報提供" + +msgid "Notification" +msgstr "お知らせ" + +msgid "Warning" +msgstr "警告" + msgid "WiFi client AP mode" msgstr "WiFiクライアントAPモード" @@ -639,7 +770,10 @@ msgid "Bridged AP mode" msgstr "ブリッジAPモード" msgid "WiFi repeater mode" -msgstr "" +msgstr "WiFi リピーターモード" + +msgid "Dual band AP mode" +msgstr "デュアルバンド AP モード" msgid "Hide SSID in broadcast" msgstr "ブロードキャストでSSIDを非表示" @@ -648,16 +782,16 @@ msgid "Maximum number of clients" msgstr "クライアントの最大数" msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." -msgstr "" +msgstr "hostapd のmax_num_staオプションを設定する。デフォルトと最大値は 2007。空または 0 の場合はデフォルトが適用される。" msgid "Beacon interval" msgstr "ビーコン間隔" msgid "Disable disassoc_low_ack" -msgstr "" +msgstr "disassoc_low_ack を無効にする" msgid "Do not disassociate stations based on excessive transmission failures." -msgstr "" +msgstr "過度の送信失敗に基づいてステーションをディスアソシエートしない。" msgid "Executing RaspAP service start" msgstr "RaspAPを開始しています。" @@ -666,82 +800,151 @@ msgid "Close" msgstr "閉じる" msgid "Enable this option to log hostapd activity." -msgstr "" +msgstr "hostapd の活動をログに記録するには、このオプションを有効にする。" msgid "Transmit power (dBm)" -msgstr "" +msgstr "送信パワー (dBm)" msgid "Sets the txpower option for the AP interface and the configured country." -msgstr "" +msgstr "AP インターフェースと設定されている国のtxpowerオプションを設定する。" msgid "dBm is a unit of level used to indicate that a power ratio is expressed in decibels (dB) with reference to one milliwatt (mW). 30 dBm is equal to 1000 mW, while 0 dBm equals 1.25 mW." -msgstr "" +msgstr "dBm は、電力比が1ミリワット(mW)を基準としてデシベル(dB)で表されることを示すために使われるレベルの単位である。30 dBmは1000 mWに等しく、0 dBmは1.25 mWに等しい。" msgid "WPA and WPA2" -msgstr "" +msgstr "WPAとWPA2" msgid "WPA2 and WPA3-Personal (transitional mode)" -msgstr "" +msgstr "WPA2およびWPA3-Personal(移行モード)" msgid "WPA3-Personal (required)" -msgstr "" +msgstr "WPA3-Personal (必須)" msgid "Enabled (for supported clients)" -msgstr "" +msgstr "有効 (サポートされているクライアントの場合)" msgid "Required (for supported clients)" -msgstr "" +msgstr "必須 (サポートされているクライアントの場合)" msgid "802.11w extends strong cryptographic protection to a select set of robust management frames, including Deauthentication, Disassociation and certain categories of Action Management frames. Collectively, this is known as Management Frame Protection (MFP)." -msgstr "" +msgstr "802.11w は、Deauthentication(認証解除)、Disassociation(関連付け解除)、Action Management(アクション管理)フレームの特定のカテゴリを含む、選択された堅牢な管理フレームに強力な暗号保護を拡張します。これは、MFP(Management Frame Protection)と総称されます。" msgid "Scan this QR code directly or %s %sprint a sign%s for your users." -msgstr "" +msgstr "この QR コードを直接スキャンするか、 %s %sサイン%s を印刷してユーザーに提供してください。" msgid "Printable Wi-Fi sign" -msgstr "" +msgstr "印刷可能なWi-Fiサイン" msgid "To connect with your phone or tablet, scan the QR code above with your camera app." -msgstr "" +msgstr "スマホやタブレットで接続するには、上のQRコードをカメラアプリで読み取ってください。" msgid "For other devices, use the login credentials below." -msgstr "" +msgstr "その他のデバイスの場合は、以下のログイン認証情報を使用してください。" msgid "Network" -msgstr "" +msgstr "ネットワーク" msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only." -msgstr "" +msgstr "選択したインターフェース (%s) は、2.4 GHz ワイヤレスバンドのみをサポートしています。" msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only." -msgstr "" +msgstr "選択されたインターフェース (%s) は 2.5 GHz ワイヤレスバンドのみをサポートしています。" msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands." -msgstr "" +msgstr "選択したインターフェース (%s) は、2.4 と 5 GHz の両方のワイヤレスバンドをサポートしている。" msgid "The selected interface (%s) does not support wireless mode operation." -msgstr "" +msgstr "選択されたインターフェイス(%s)は、ワイヤレスモード操作をサポートしていません。" msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set." -msgstr "" +msgstr "802.11ac 5 GHz オプションは、互換性のあるワイヤレス規制ドメインが設定されるまで無効です。" msgid "WiFi repeater mode: A metric value is already defined for DHCP." -msgstr "" +msgstr "WiFiリピーターモード:メトリック値はすでにDHCP用に定義されています。" msgid "Restart hotspot to enable WiFi repeater mode." -msgstr "" +msgstr "ホットスポットを再起動してWiFiリピーターモードを有効にします。" msgid "Unable to obtain metric value for client interface. Repeater mode inactive." -msgstr "" +msgstr "クライアントインタフェースのメトリック値を取得できない。リピータモードが無効です。" msgid "Metric value configured for the %s interface." -msgstr "" +msgstr "%s インターフェースに設定されたメトリック値。" msgid "Parameter hiddenSSID contains invalid configuration value." -msgstr "" +msgstr "パラメータ hiddenSSID に無効な設定値が含まれています。" msgid "Parameter hiddenSSID is not a number." -msgstr "" +msgstr "パラメータ hiddenSSID は数値ではない。" + +msgid "Bridge interface configuration" +msgstr "ブリッジ・インターフェース設定" + +msgid "Configure a static IP address for the br0 interface to maintain connectivity during bridge mode activation." +msgstr "br0インターフェースにスタティック IP アドレスを設定し、ブリッジモード起動時の接続性を維持します。" + +msgid "Static IP Address" +msgstr "静的IPアドレス" + +msgid "Netmask / CIDR" +msgstr "ネットマスク / CIDR" + +msgid "Example: 192.168.1.100" +msgstr "例: 192.168.1.100" + +msgid "CIDR notation (e.g., 24 for 255.255.255.0)" +msgstr "CIDR表記(例:255.255.255.0なら24)" + +msgid "Gateway" +msgstr "ゲートウェイ" + +msgid "Your router's IP address" +msgstr "ルーターのIPアドレス" + +msgid "Usually same as gateway" +msgstr "通常はゲートウェイと同じ" + +msgid "Bridge static IP address must be a valid IPv4 address" +msgstr "ブリッジの静的 IP アドレスは有効な IPv4 アドレスでなければならない" + +msgid "Bridge netmask must be a number between 1 and 32" +msgstr "ブリッジのネットマスクは 1 から 32 までの数字でなければならない" + +msgid "Bridge netmask is required when using static IP" +msgstr "静的 IP を使う場合はブリッジネットマスクが必要" + +msgid "Bridge gateway must be a valid IPv4 address" +msgstr "ブリッジゲートウェイは有効な IPv4 アドレスでなければならない" + +msgid "Bridge gateway is required when using static IP" +msgstr "固定 IP を使う場合はブリッジゲートウェイが必要" + +msgid "Bridge DNS server must be a valid IPv4 address" +msgstr "ブリッジ DNS サーバは有効な IPv4 アドレスでなければならない。" + +msgid "Bridge DNS server is required when using static IP" +msgstr "静的 IP を使用する場合はブリッジ DNS サーバが必要" + +msgid "Bridge static IP and gateway must be in the same subnet" +msgstr "ブリッジの静的IPとゲートウェイは同じサブネットになければならない" + +msgid "Please enter a valid IPv4 address" +msgstr "有効なIPv4アドレスを入力してください。" + +msgid "Please enter a valid netmask" +msgstr "有効なネットマスクを入力してください。" + +msgid "DHCP configuration for br0 enabled" +msgstr "br0のDHCPコンフィギュレーションが有効" + +msgid "Unable to save WiFi hotspot settings due to validation errors" +msgstr "検証エラーによりWiFiホットスポット設定を保存できない" + +msgid "Enable AP isolation" +msgstr "AP分離を有効にする" + +msgid "Blocks wireless clients from seeing or connecting to each other. Recommended for guest networks and public access points." +msgstr "ワイヤレスクライアント同士の通信を遮断します。ゲストネットワークや公共のアクセスポイントにお勧めします。" #: includes/networking.php msgid "Summary" @@ -762,9 +965,12 @@ msgstr "代替DNSサーバー" msgid "Adapter IP Address Settings" msgstr "アダプタのIPアドレス設定" -msgid "Enable Fallback to Static Option" +msgid "Enable fallback to static option" msgstr "静的オプションへのフォールバックを有効にする" +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "このオプションを有効にすると、静的プロファイルが構成され、DHCPリースが失敗したときにフォールバックします。" + msgid "Static IP" msgstr "静止IP" @@ -787,154 +993,154 @@ msgid "Information provided by /sys/class/net" msgstr "/sys/class/netによって提供される情報" msgid "Devices" -msgstr "" +msgstr "デバイス" msgid "Diagnostics" -msgstr "" +msgstr "診断" -msgid "Properties of network devices" -msgstr "" +msgid "Network devices" +msgstr "ネットワーク機器" msgid "Device" -msgstr "" +msgstr "装置" -msgid "MAC" -msgstr "" +msgid "MAC address" +msgstr "MACアドレス" msgid "USB vid/pid" -msgstr "" +msgstr "USB vid/pid" msgid "Device type" -msgstr "" +msgstr "デバイスタイプ" msgid "Fixed name" -msgstr "" +msgstr "固定名" msgid "Change" -msgstr "" +msgstr "変更" -msgid "Settings for Mobile Data Devices" -msgstr "" +msgid "Mobile data settings" +msgstr "モバイルデータ設定" -msgid "PIN of SIM card" -msgstr "" +msgid "SIM card PIN number" +msgstr "SIMカードのPIN番号" msgid "APN Settings (Modem device ppp0)" -msgstr "" +msgstr "APN設定(モデムデバイスppp0)" msgid "Access Point Name (APN)" -msgstr "" +msgstr "アクセスポイント名(APN)" msgid "Password" -msgstr "" +msgstr "パスワード" msgid "Successfully Updated Network Configuration" -msgstr "" +msgstr "ネットワーク設定の更新に成功" msgid "Error saving network configuration to file" -msgstr "" +msgstr "ネットワーク設定のファイル保存エラー" msgid "Unable to detect interface" -msgstr "" +msgstr "インターフェイスを検出できない" msgid "Routing table" -msgstr "" +msgstr "ルーティングテーブル" msgid "raw output" -msgstr "" +msgstr "生出力" msgid "Setting wireless regulatory domain to %s" -msgstr "" +msgstr "無線規制ドメインの設定 %s" msgid "Please provide a valid SSID." -msgstr "" +msgstr "有効なSSIDを入力してください。" msgid "Please provide a valid PSK." -msgstr "" +msgstr "有効なPSKを入力してください。" msgid "Speedtest" -msgstr "" +msgstr "スピードテスト" msgid "Selecting a server" -msgstr "" +msgstr "サーバーの選択" msgid "Privacy" -msgstr "" +msgstr "プライバシー" msgid "Server" -msgstr "" +msgstr "サーバー" msgid "ms" -msgstr "" +msgstr "ms" msgid "Mbps" -msgstr "" +msgstr "Mbps" msgid "Ping" -msgstr "" +msgstr "ピン" msgid "Jitter" -msgstr "" +msgstr "ジッター" msgid "Upload" -msgstr "" +msgstr "アップロード" msgid "Start" -msgstr "" +msgstr "スタート" msgid "Abort" -msgstr "" +msgstr "中止" msgid "Wireless LAN routing" -msgstr "" +msgstr "無線LANルーティング" msgid "Stop WLAN routing" -msgstr "" +msgstr "WLANルーティングの停止" msgid "Start WLAN routing" -msgstr "" +msgstr "WLANルーティングの開始" msgid "Restart WLAN routing" -msgstr "" +msgstr "WLANルーティングの再起動" msgid "This option configures RaspAP to route network traffic from your wireless client (STA) interface to another available interface." -msgstr "" +msgstr "このオプションは、ワイヤレスクライアント(STA)インターフェースからのネットワークトラフィックを別の利用可能なインターフェースにルーティングするようにRaspAPを設定します。" msgid "When an output interface is selected, iptables rules are added to route packets using network address translation (NAT). This is often done to share internet connectivity from a WLAN with devices on an eth0, usb0 or predictable enx interface." -msgstr "" +msgstr "出力インターフェイスが選択されると、iptablesルールが追加され、ネットワークアドレス変換(NAT)を使用してパケットをルーティングする。これは、WLANからのインターネット接続をeth0usb0、または予測可能なenxインターフェースのデバイスと共有するためによく行われます。" msgid "Wireless client interface" -msgstr "" +msgstr "ワイヤレスクライアントインターフェース" msgid "Output interface" -msgstr "" +msgstr "出力インターフェース" msgid "Configure a static IP address and DHCP for output interface" -msgstr "" +msgstr "出力インターフェースにスタティックIPアドレスとDHCPを設定する" msgid "Attempting to enable routing between %s and %s interfaces" -msgstr "" +msgstr "%s と %s インターフェース間のルーティングを有効にしようとしている。" msgid "Attempting to disable routing between %s and %s interfaces" -msgstr "" +msgstr "%s と %s インターフェース間のルーティングを無効にしようとしている。" msgid "No default DHCP configuration exists for the %s interface" -msgstr "" +msgstr "%s 、デフォルトのDHCPコンフィグレーションは存在しない。" msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" -msgstr "" +msgstr "DHCPサーバーの設定で、このインターフェイスに静的IPとDHCPを設定します。" msgid "WLAN routing configuration saved" -msgstr "" +msgstr "WLANルーティング設定の保存" msgid "Unable to save WLAN routing configuration" -msgstr "" +msgstr "WLANルーティング設定を保存できない" msgid "Successfully restarted dnsmasq" -msgstr "" +msgstr "dnsmasqの再起動に成功" msgid "Failed to restart dnsmasq" -msgstr "" +msgstr "dnsmasqの再起動に失敗" #: includes/system.php msgid "System Information" @@ -965,14 +1171,20 @@ msgid "Uptime" msgstr "アップタイム" msgid "System Time" -msgstr "" +msgstr "システム時間" msgid "Memory Used" msgstr "使用メモリ" +msgid "Storage Used" +msgstr "使用ストレージ" + msgid "CPU Load" msgstr "CPU負荷" +msgid "CPU Temp" +msgstr "CPU温度" + msgid "Reboot" msgstr "リブート" @@ -980,16 +1192,16 @@ msgid "Shutdown" msgstr "シャットダウン" msgid "System reboot" -msgstr "" +msgstr "システムの再起動" msgid "System shutdown" -msgstr "" +msgstr "システム停止" msgid "Reboot now? The system will be temporarily unavailable." -msgstr "" +msgstr "今すぐ再起動しますか?システムは一時的に使用できなくなります。" msgid "Shutdown now? The system will be unavailable." -msgstr "" +msgstr "今すぐシャットダウンしますか?システムは利用できなくなります。" msgid "System Rebooting Now!" msgstr "システムを再起動しています!" @@ -1004,40 +1216,40 @@ msgid "Web server bind address" msgstr "Webサーバーのバインドアドレス" msgid "OS" -msgstr "" +msgstr "OS" msgid "Kernel" -msgstr "" +msgstr "カーネル" msgid "System reset" -msgstr "" +msgstr "システムのリセット" msgid "Reset RaspAP to its initial configuration? This action cannot be undone." -msgstr "" +msgstr "RaspAPを初期設定に戻しますか?この操作は元に戻せません。" msgid "Reset complete. Restart the hotspot for the changes to take effect." -msgstr "" +msgstr "リセットが完了しました。変更を有効にするには、ホットスポットを再起動します。" msgid "System reset in progress..." -msgstr "" +msgstr "システムリセット中..." msgid "Reset" -msgstr "" +msgstr "リセット" msgid "Restore settings" -msgstr "" +msgstr "設定の復元" msgid "To reset RaspAP to its initial configuration, click or tap the button below." -msgstr "" +msgstr "ラズパップを初期設定に戻すには、以下のボタンをクリックまたはタップしてください。" msgid "Custom files for optional components such as Ad Blocking, WireGuard or OpenVPN will remain on the system." -msgstr "" +msgstr "広告ブロック、WireGuard、OpenVPNなどのオプションコンポーネントのカスタムファイルはシステムに残ります。" msgid "Perform reset" -msgstr "" +msgstr "リセットの実行" msgid "Restores all access point (AP) service settings to their default values. This applies to hostapd, dhcpcd and dnsmasq." -msgstr "" +msgstr "すべてのアクセスポイント(AP)サービス設定をデフォルト値に戻します。これは hostapd、dhcpcd、dnsmasq に適用されます。" msgid "Theme settings" msgstr "テーマ設定" @@ -1049,34 +1261,142 @@ msgid "Color" msgstr "色" msgid "Enable this option for resizable, drag and drop widgets. Best for large displays." -msgstr "" +msgstr "リサイズ可能なドラッグ&ドロップ・ウィジェットにはこのオプションを有効にしてください。大きなディスプレイに最適です。" msgid "Dynamic widgets" -msgstr "" +msgstr "ダイナミック・ウィジェット" msgid "Tools" -msgstr "" +msgstr "ツール" msgid "System tools" -msgstr "" +msgstr "システムツール" msgid "To generate a system debug log, click or tap the button below." -msgstr "" +msgstr "システムデバッグログを生成するには、以下のボタンをクリックまたはタップします。" msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." -msgstr "" +msgstr "デバッグログ情報には、ラズパップのバージョン、AP関連サービスの現在の状態と設定、インストールされているシステムパッケージ、Linuxカーネルのバージョン、ネットワークの詳細が含まれる。パスワードやその他の機密データは含まれていません。" msgid "Generate debug log" -msgstr "" +msgstr "デバッグ・ログの生成" msgid "Debug log generation in progress..." -msgstr "" +msgstr "デバッグ・ログ生成中" msgid "Diagnostic log size limit (KB)" -msgstr "" +msgstr "診断ログのサイズ制限(KB)" msgid "Changing log limit size to %s KB" -msgstr "" +msgstr "ログの上限サイズを %s KB に変更" + +msgid "Information provided by raspap.sysinfo" +msgstr "raspap.sysinfoが提供する情報" + +msgid "The following user plugins are available to extend RaspAP's functionality." +msgstr "ラズパップの機能を拡張するために、以下のユーザープラグインが利用できます。" + +msgid "Choose Details for more information and to install a plugin." +msgstr "詳細とプラグインのインストールについては、「詳細」を選択してください。" + +msgid "Network error" +msgstr "ネットワークエラー" + +msgid "Unable to load plugins" +msgstr "プラグインをロードできない" + +msgid "Reload" +msgstr "リロード" + +msgid "and try again" +msgstr "そしてもう一度" + +msgid "Plugins" +msgstr "プラグイン" + +msgid "Plugin details" +msgstr "プラグインの詳細" + +msgid "Name" +msgstr "名称" + +msgid "Version" +msgstr "バージョン" + +msgid "Description" +msgstr "説明" + +msgid "Plugin source" +msgstr "プラグインソース" + +msgid "Author" +msgstr "著者" + +msgid "License" +msgstr "ライセンス" + +msgid "Language locale" +msgstr "言語ロケール" + +msgid "Configuration files" +msgstr "設定ファイル" + +msgid "Dependencies" +msgstr "依存関係" + +msgid "Permissions" +msgstr "アクセス許可" + +msgid "Non-privileged users" +msgstr "非特権ユーザー" + +msgid "Install now" +msgstr "今すぐインストール" + +msgid "Installing plugin" +msgstr "プラグインのインストール" + +msgid "Plugin installation in progress..." +msgstr "プラグインのインストール中..." + +msgid "Plugin install completed." +msgstr "プラグインのインストールが完了しました。" + +msgid "Details" +msgstr "詳細" + +msgid "Installed" +msgstr "設置済み" + +msgid "Alert messages" +msgstr "アラートメッセージ" + +msgid "Alert close timeout (milliseconds)" +msgstr "アラート終了タイムアウト(ミリ秒)" + +msgid "Automatically close alerts after a specified timeout" +msgstr "指定したタイムアウト後に自動的にアラートを閉じる" + +msgid "To inspect adapters attached to this device, click or tap the button below." +msgstr "このデバイスに接続されているアダプターを検査するには、下のボタンをクリックまたはタップしてください。" + +msgid "The adapter inspection tool returns details about external WLAN devices including drivers, supported modes and so on." +msgstr "アダプタ検査ツールは、ドライバ、サポートされているモードなどを含む外部WLANデバイスの詳細を返します。" + +msgid "Choose a network interface to inspect" +msgstr "検査するネットワークインターフェースを選択する" + +msgid "Select an interface..." +msgstr "インターフェイスを選択" + +msgid "Adapter health check" +msgstr "アダプターのヘルスチェック" + +msgid "Inspect adapters" +msgstr "アダプターの検査" + +msgid "Theme" +msgstr "テーマ" #: includes/data_usage.php msgid "Data usage" @@ -1183,7 +1503,7 @@ msgid "Currently available OpenVPN client configurations are displayed below." msgstr "現在利用可能なOpenVPNクライアント設定は以下の通りです。" msgid "Activating a configuration will restart the openvpn-client service." -msgstr "" +msgstr "設定を有効にすると、openvpn-clientサービスが再起動します。" msgid "Delete OpenVPN client" msgstr "OpenVPNクライアントを削除" @@ -1219,7 +1539,7 @@ msgid "Enter username and password" msgstr "あなたのユーザー名とパスワードを入力してください" msgid "Certificates in the configuration file" -msgstr "" +msgstr "設定ファイルの証明書" msgid "RaspAP supports certificates by including them in the configuration file." msgstr "RaspAPは証明書を設定ファイルに含めることによって証明書による認証をサポートします。" @@ -1297,7 +1617,7 @@ msgid "down" msgstr "下" msgid "Clear log" -msgstr "" +msgstr "クリアログ" msgid "adblock" msgstr "adblock" @@ -1318,13 +1638,13 @@ msgid "Enable blocklists" msgstr "ブロックリストを有効にする" msgid "Enable this option if you want RaspAP to block DNS requests for ads, tracking and other virtual garbage. Blocklists are gathered from multiple, actively maintained sources and automatically updated, cleaned, optimized and moderated on a daily basis." -msgstr "" +msgstr "ラズパップに広告、トラッキング、その他の仮想ゴミのDNSリクエストをブロックさせたい場合は、このオプションを有効にします。ブロックリストは、アクティブに維持されている複数のソースから収集され、毎日自動的に更新、クリーニング、最適化、およびモデレートされます。" msgid "This option adds conf-file and addn-hosts to the dnsmasq configuration." -msgstr "" +msgstr "このオプションは、dnsmasq設定にconf-fileと addn-hostsを追加する。" msgid "Choose a blocklist provider" -msgstr "" +msgstr "ブロックリストのプロバイダーを選択する" msgid "Hostnames blocklist last updated" msgstr "ホスト名のブロックリストの最終更新" @@ -1345,13 +1665,13 @@ msgid "Enable custom blocklist" msgstr "カスタムブロックリストを有効にする" msgid "Define custom hosts to be blocked by entering an IPv4 or IPv6 address followed by any whitespace (spaces or tabs) and the host name." -msgstr "" +msgstr "IPv4またはIPv6アドレスの後に空白(スペースまたはタブ)とホスト名を入力して、ブロックするカスタムホストを定義します。" msgid "IPv4 example: 0.0.0.0 badhost.com" msgstr "IPv4の例: 0.0.0.0 badhost.com" msgid "This option adds an addn-hosts directive to the dnsmasq configuration." -msgstr "" +msgstr "このオプションはdnsmasq設定にaddn-hostsディレクティブを追加します。" msgid "Custom blocklist not defined" msgstr "カスタムブロックリストが設定されていません。" @@ -1366,43 +1686,43 @@ msgid "Tunnel settings" msgstr "トンネルの設定" msgid "Configuration Method" -msgstr "" +msgstr "設定方法" msgid "Upload file" -msgstr "" +msgstr "ファイルのアップロード" msgid "Create manually" -msgstr "" +msgstr "手動で作成" msgid "Upload a WireGuard config" -msgstr "" +msgstr "WireGuard設定のアップロード" msgid "This option uploads and installs an existing WireGuard .conf file on this device." -msgstr "" +msgstr "このオプションは、このデバイスに既存のWireGuard.confファイルをアップロードしてインストールします。" -msgid "Apply iptables rules for AP interface" -msgstr "" +msgid "Apply iptables rules to the selected interface" +msgstr "選択したインターフェイスにiptablesルールを適用する" -msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on the AP interface." -msgstr "" +msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on a desired interface. The active AP interface is the default." +msgstr "wg0インターフェイスからのネットワーク・トラフィックを、希望するインターフェイスに接続されているクライアントに転送したい場合に推奨する。アクティブな AP インターフェースがデフォルトです。" -msgid "This option adds iptables Postup and PostDown rules for the configured AP interface (%s)." -msgstr "" +msgid "This option adds iptables Postup and PostDown rules for the interface selected below." +msgstr "このオプションは、以下で選択したインターフェイスにiptablesの Postupと PostDownルールを追加します。" msgid "Select WireGuard configuration file (.conf)" -msgstr "" +msgstr "WireGuard設定ファイル(.conf)を選択します。" msgid "Create a local WireGuard config" -msgstr "" +msgstr "ローカルWireGuardコンフィグを作成する" msgid "Enable server" msgstr "サーバーを有効化" msgid "Enable this option to secure network traffic by creating an encrypted tunnel between RaspAP and configured peers." -msgstr "" +msgstr "このオプションを有効にすると、ラズパップと設定されたピアとの間に暗号化されたトンネルが作成され、ネットワークトラフィックが保護されます。" msgid "This setting generates a new WireGuard .conf file on this device." -msgstr "" +msgstr "この設定により、このデバイス上に新しいWireGuard.confファイルが生成されます。" msgid "Local public key" msgstr "ローカル公開鍵" @@ -1423,10 +1743,10 @@ msgid "Enable peer" msgstr "ピアの有効化" msgid "Enable this option to encrypt traffic by creating a tunnel between RaspAP and this peer." -msgstr "" +msgstr "このオプションを有効にすると、ラズパップとこのピアとの間にトンネルが作成され、トラフィックが暗号化されます。" msgid "This option adds client.conf to the WireGuard configuration." -msgstr "" +msgstr "このオプションは、WireGuard設定にclient.confを追加します。" msgid "Peer public key" msgstr "ピア公開鍵" @@ -1438,13 +1758,13 @@ msgid "Allowed IPs" msgstr "許可されたIPアドレス" msgid "Persistent keepalive" -msgstr "" +msgstr "持続的キープアライブ" msgid "Enable this option to display an updated wg-quick debug log." -msgstr "" +msgstr "更新されたwg-quickデバッグログを表示するためにこのオプションを有効にする。" msgid "WireGuard debug log updated" -msgstr "" +msgstr "WireGuardデバッグログ更新" msgid "Scan this QR code with your client to connect to this tunnel" msgstr "接続したいデバイスで、このQRコードをスキャンしてトンネルに接続します。" @@ -1477,392 +1797,941 @@ msgid "WireGuard configuration failed to be updated" msgstr "WireGuardの設定を更新できませんでした" msgid "Enable kill switch" -msgstr "" +msgstr "キルスイッチを有効にする" -msgid "This option adds iptables PostUp and PreDown rules for the configured AP interface (%s)." -msgstr "" +msgid "This option adds iptables PostUp and PreDown rules for the configured interface." +msgstr "このオプションは、設定されたインターフェイスにiptablesの PostUpと PreDownルールを追加します。" msgid "Recommended if you wish to prevent the flow of unencrypted packets through non-WireGuard interfaces." -msgstr "" +msgstr "WireGuard以外のインターフェイスを経由する暗号化されていないパケットのフローを防止したい場合に推奨。" msgid "iptables rules added to WireGuard configuration" -msgstr "" +msgstr "WireGuard設定にiptablesルールを追加" msgid "Existing iptables rules found in WireGuard configuration - not added" -msgstr "" +msgstr "WireGuardの設定に既存のiptablesルールが見つかりました。" msgid "Currently available WireGuard file configurations are displayed below." -msgstr "" +msgstr "現在利用可能なWireGuardファイル構成は以下のとおりです。" msgid "Activating a configuration will restart the wg-quick service." -msgstr "" +msgstr "設定を有効にすると、wg-quickサービスを再起動します。" msgid "Client Firewall" -msgstr "" +msgstr "クライアントファイアウォール" msgid "Firewall is ENABLED" -msgstr "" +msgstr "ファイアウォールが有効" msgid "Firewall is OFF" -msgstr "" +msgstr "ファイアウォールがオフ" msgid "The default firewall will only allow outgoing and already established traffic." -msgstr "" +msgstr "デフォルトのファイアウォールは、発信トラフィックと既に確立されたトラフィックのみを許可する。" msgid "No incoming UDP traffic is allowed." -msgstr "" +msgstr "UDPトラフィックの着信は許可されない。" msgid "There are no restrictions for the access point %s." -msgstr "" +msgstr "アクセスポイントの制限はありません。 %s." msgid "Exception: Service" -msgstr "" +msgstr "例外サービス" msgid "allow SSH access on port 22" -msgstr "" +msgstr "ポート22でのSSHアクセスを許可する" msgid "allow access to the RaspAP GUI on port 80 or 443" -msgstr "" +msgstr "ポート 80 または 443 での RaspAP GUI へのアクセスを許可します。" msgid "Allow incoming connections for some services from the internet side." -msgstr "" +msgstr "インターネット側から一部のサービスへの着信接続を許可する。" msgid "Exception: network device" -msgstr "" +msgstr "例外:ネットワーク機器" msgid "Exclude device(s)" -msgstr "" +msgstr "デバイスを除く" msgid "Exclude the given network device(s) (separated by a blank or comma) from firewall rules." -msgstr "" +msgstr "指定されたネットワークデバイス(複数可)をファイアウォールルールから除外します(空白またはカンマで区切ります)。" msgid "Current client devices: %s" -msgstr "" +msgstr "現在のクライアントデバイス %s" msgid "The access point %s is per default excluded." -msgstr "" +msgstr "アクセスポイント %sはデフォルトで除外されている。" msgid "Exception: IP-Address" -msgstr "" +msgstr "例外IPアドレス" msgid "Allow incoming connections from" -msgstr "" +msgstr "からの着信接続を許可する。" msgid "For the given IP-addresses (separated by a blank or comma) the incoming connection (via TCP and UDP) is accepted." -msgstr "" +msgstr "与えられたIPアドレス(空白またはカンマで区切られる)に対して、(TCPおよびUDP経由の)着信接続を受け付ける。" msgid "This is required for an OpenVPN via UDP or Wireguard connection." -msgstr "" +msgstr "これは、UDP経由のOpenVPNまたはWireguard接続に必要です。" msgid "The list of configured VPN server IP addresses: %s" -msgstr "" +msgstr "設定されているVPNサーバーのIPアドレスのリスト: %s" msgid "Disable Firewall" -msgstr "" +msgstr "ファイアウォールを無効にする" msgid "Enable Firewall" -msgstr "" +msgstr "ファイアウォールを有効にする" + +msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." +msgstr "ファイアウォールのステータスを変更すると、受信トラフィックが中断されたり許可されたりすることがあります。続行を選択します。" + +msgid "Proceed" +msgstr "進む" msgid "Apply changes" -msgstr "" +msgstr "変更を適用する" msgid "Dynamic DNS" -msgstr "" +msgstr "ダイナミックDNS" msgid "Service provider" -msgstr "" +msgstr "サービスプロバイダー" msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." -msgstr "" +msgstr "ddclientがサポートするダイナミックDNSサービスを以下のリストから選択します。既知のサービスプロバイダを選択すると、プロトコルと サーバのフィールドに入力されます。サービスを手動で設定することもできます。" msgid "Method to obtain IP" -msgstr "" +msgstr "IPの取得方法" msgid "Select the method used by ddclient to obtain an IP address. This value is specified in the -use option." -msgstr "" +msgstr "IPアドレスを取得するためにddclientが使用する方法を選択します。この値は-useオプションで指定する。" msgid "Discovery page on the web" -msgstr "" +msgstr "ウェブ上のディスカバリー・ページ" msgid "Network interface" -msgstr "" +msgstr "ネットワークインターフェース" msgid "Network address" -msgstr "" +msgstr "ネットワークアドレス" msgid "Firewall status page" -msgstr "" +msgstr "ファイアウォールのステータスページ" msgid "External command" -msgstr "" +msgstr "外部コマンド" msgid "Web address" -msgstr "" +msgstr "ウェブアドレス" msgid "Firewall" -msgstr "" +msgstr "ファイアウォール" msgid "Command" -msgstr "" +msgstr "コマンド" msgid "Example: 192.168.1.254/status.htm." -msgstr "" +msgstr "Example:192.168.1.254/status.htm." msgid "Example: /usr/local/bin/get-ip." -msgstr "" +msgstr "例/usr/local/bin/get-ip." msgid "Domain" -msgstr "" +msgstr "ドメイン" msgid "Enable SSL" -msgstr "" +msgstr "SSLを有効にする" msgid "Use an encrypted SSL connection for updates. Not supported by all providers." -msgstr "" +msgstr "更新には暗号化されたSSL接続を使用します。すべてのプロバイダーでサポートされているわけではありません。" msgid "Value specified in milliseconds (ms). Default is 300." -msgstr "" +msgstr "ミリ秒(ms)単位で指定。デフォルトは300。" msgid "Use the Generate log button to output detailed ddclient daemon debug info" -msgstr "" +msgstr "詳細なddclientデーモンのデバッグ情報を出力するには、[Generate log]ボタンを使用します。" msgid "Generate log" -msgstr "" +msgstr "ログ作成" msgid "Information provided by ddclient" -msgstr "" +msgstr "ddclientが提供する情報" msgid "Start Dynamic DNS" -msgstr "" +msgstr "ダイナミックDNSの開始" msgid "Stop Dynamic DNS" -msgstr "" +msgstr "ダイナミックDNSの停止" msgid "Restart Dynamic DNS" -msgstr "" +msgstr "ダイナミックDNSの再起動" msgid "Account details" -msgstr "" +msgstr "口座詳細" msgid "My account" -msgstr "" +msgstr "マイアカウント" msgid "Server location" -msgstr "" +msgstr "サーバーの場所" msgid "Choosing Save settings will connect to the selected country." -msgstr "" +msgstr "Save settingsを選択すると、選択した国に接続されます。" msgid "Choosing Connect %s will connect to a recommended server." -msgstr "" +msgstr "Connect %sを選択すると、推奨サーバーに接続されます。" msgid "Select a country from the server location list" -msgstr "" +msgstr "サーバーの場所リストから国を選択" msgid "Select a country..." -msgstr "" +msgstr "国を選択..." msgid "Account information not available from %s's Linux CLI." -msgstr "" +msgstr "%sの Linux CLI からは利用できないアカウント情報。" msgid "Attempting to connect to %s" -msgstr "" +msgstr "%sに接続しようとしている" msgid "Attempting to connect VPN provider" -msgstr "" +msgstr "VPNプロバイダーへの接続を試みる" msgid "Attempting to disconnect VPN provider" -msgstr "" +msgstr "VPNプロバイダの切断を試みる" msgid "Expected %s binary not found at: %s" -msgstr "" +msgstr "%s にバイナリが見つかりません: %s" msgid "Visit the installation instructions for %s's Linux CLI." -msgstr "" +msgstr "%sの Linux CLI のインストール手順をご覧ください。" msgid "Unable to execute %s binary found at: %s" -msgstr "" +msgstr "%s にあるバイナリを実行できない: %s" msgid "Check that binary is executable and permissions exist in raspap.sudoers" -msgstr "" +msgstr "バイナリが実行可能で、raspap.sudoersにパーミッションが存在することを確認する。" msgid "Installed Linux CLI: %s" -msgstr "" +msgstr "Linux CLIをインストール: %s" msgid "Current %s connection status is displayed below." -msgstr "" +msgstr "現在の %s現在の接続状態が下に表示されます。" msgid "Information provided by %s" -msgstr "" +msgstr "情報提供: %s" msgid "Connect %s" -msgstr "" +msgstr "コネクト %s" msgid "Disconnect %s" -msgstr "" +msgstr "切断 %s" msgid "About" -msgstr "" +msgstr "について" msgid "Insiders" -msgstr "" +msgstr "インサイダー" msgid "Contributing" -msgstr "" +msgstr "貢献" msgid "Check for update" -msgstr "" +msgstr "アップデートの確認" msgid "New release check in progress..." -msgstr "" +msgstr "新作チェック中" msgid "A new release is available: Version" -msgstr "" +msgstr "新しいリリースが利用可能です:バージョン" msgid "Installed version is the latest release." -msgstr "" +msgstr "インストールされているバージョンは最新リリースです。" msgid "GitHub authentication" -msgstr "" +msgstr "GitHub認証" msgid "Updating Insiders requires GitHub authentication." -msgstr "" +msgstr "InsidersのアップデートにはGitHub認証が必要です。" msgid "Your credentials will be sent to GitHub securely with SSL. However, use caution if your RaspAP install is on a WLAN shared by untrusted users." -msgstr "" +msgstr "認証情報はSSLで安全にGitHubに送信されます。ただし、RaspAP をインストールした場所が、信頼できないユーザーと共有している WLAN 上にある場合は注意してください。" msgid "Personal Access Token" -msgstr "" +msgstr "パーソナル・アクセストークン" msgid "Please provide a valid token." -msgstr "" +msgstr "有効なトークンを入力してください。" msgid "Perform update" -msgstr "" +msgstr "アップデートの実行" msgid "Update in progress" -msgstr "" +msgstr "更新中" msgid "Application is being updated..." -msgstr "" +msgstr "アプリケーションは更新中です..." msgid "Configuring update" -msgstr "" +msgstr "アップデートの設定" msgid "Updating sources" -msgstr "" +msgstr "ソースの更新" msgid "Installing package updates" -msgstr "" +msgstr "パッケージアップデートのインストール" msgid "Downloading latest files" -msgstr "" +msgstr "最新ファイルのダウンロード" msgid "Installing application" -msgstr "" +msgstr "アプリケーションのインストール" msgid "Update complete" -msgstr "" +msgstr "更新完了" msgid "An error occurred. Check the log at /tmp/raspap_install.log" -msgstr "" +msgstr "エラーが発生しました。tmp/raspap_install.logのログを確認してください。" + +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP は %1$s と %2$s の共創であり、私たちの %3$s と %4$sが貢献している。 %5$s、 %6$s 、 %7$s としてプロジェクトに参加することについての詳細はこちらをご覧ください。 %8$s にはすぐにアクセスできます。 %9$s。" + +msgid "developer community" +msgstr "開発者コミュニティ" + +msgid "language translators" +msgstr "言語翻訳者" + +msgid "code contributor" +msgstr "コード・コントリビューター" + +msgid "translator" +msgstr "翻訳者" + +msgid "financial sponsor" +msgstr "ファイナンシャル・スポンサー" + +msgid "exclusive features" +msgstr "専用機能" msgid "RaspAP Exception" -msgstr "" +msgstr "ラズパップ例外" msgid "An exception occurred" -msgstr "" +msgstr "例外が発生した" msgid "RestAPI" -msgstr "" +msgstr "レストアピーアイ" msgid "RestAPI settings" -msgstr "" +msgstr "RestAPIの設定" msgid "Start RestAPI service" -msgstr "" +msgstr "RestAPIサービスを開始する" msgid "Stop RestAPI service" -msgstr "" +msgstr "RestAPIサービスの停止" msgid "API Key" -msgstr "" +msgstr "APIキー" msgid "Saving API key" -msgstr "" +msgstr "APIキーの保存" msgid "RestAPI status" -msgstr "" +msgstr "RestAPIのステータス" msgid "Current restapi.service status is displayed below." -msgstr "" +msgstr "現在のrestapi.serviceのステータスは以下のように表示される。" msgid "RestAPI docs are accessible here%s" -msgstr "" +msgstr "RestAPIのドキュメントはこちらから アクセスできます%s" msgid "Restarting restapi.service" -msgstr "" +msgstr "restapi.serviceの再起動" + +msgid "Information provided by restapi.service" +msgstr "restapi.serviceが提供する情報" + +msgid "Session Expired" +msgstr "セッション終了" + +msgid "Your session has expired. Please login to continue." +msgstr "セッションの有効期限が切れました。続行するにはログインしてください。" + +msgid "Login" +msgstr "ログイン" + +msgid "Administrator login" +msgstr "管理者ログイン" + +msgid "Forgot password" +msgstr "パスワードを忘れた" + +msgid "Login failed" +msgstr "ログインに失敗しました" msgid "NTP Server" -msgstr "" +msgstr "NTPサーバー" msgid "NTP Server settings" -msgstr "" +msgstr "NTPサーバーの設定" msgid "NTP daemon" -msgstr "" +msgstr "NTPデーモン" msgid "Synchronized time" -msgstr "" +msgstr "時刻同期" msgid "NTP servers" -msgstr "" +msgstr "NTPサーバー" msgid "Add an NTP server" -msgstr "" +msgstr "NTPサーバーの追加" msgid "Start NTP service" -msgstr "" +msgstr "NTPサービスの開始" msgid "Stop NTP service" -msgstr "" +msgstr "NTPサービスの停止" msgid "Edit mode" -msgstr "" +msgstr "編集モード" msgid "Use the Edit mode toggle to manually edit the current ntp.config configuration." -msgstr "" +msgstr "現在のntp.config設定を手動で編集するには、Edit modeトグルを使用する。" msgid "Specify a public NTP server or a private one on your local network. IPv4 and IPv6 address, or a fully qualified domain name (FQDN) are acceptable values." -msgstr "" +msgstr "パブリックNTPサーバーまたはローカルネットワーク上のプライベートNTPサーバーを指定します。IPv4およびIPv6アドレス、または完全修飾ドメイン名(FQDN)が使用可能な値です。" msgid "Public NTP servers supporting Network Time Security (NTS) may be specified with the nts suffix." -msgstr "" +msgstr "ネットワークタイムセキュリティ(NTS)をサポートするパブリックNTPサーバーは、接尾辞ntsで指定することができる。" msgid "Examples of valid server entries include %s, %s and %s." -msgstr "" +msgstr "有効なサーバーエントリーの例 %s, %sおよび %s." msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." -msgstr "" +msgstr "現在のntpqピアのステータスが以下に表示される。アスタリスク(*) は優先サーバーを示す。" msgid "NTP configuration cannot be empty" -msgstr "" +msgstr "NTP設定を空にすることはできません。" msgid "Restarting ntpd.service" -msgstr "" +msgstr "ntpd.serviceの再起動" msgid "Please enter a valid NTP server" -msgstr "" +msgstr "有効なNTPサーバーを入力してください。" msgid "Attempting to start ntp.service" -msgstr "" +msgstr "ntp.serviceの起動を試みる" msgid "Attempting to stop ntp.service" -msgstr "" +msgstr "ntp.serviceを停止しようとしています。" msgid "NTP configuration not found at %s" -msgstr "" +msgstr "%sで NTP コンフィグレーションが見つかりません。" msgid "NTP configuration updated" -msgstr "" +msgstr "NTP設定の更新" + +msgid "Advertising device as a Tailscale exit node" +msgstr "Tailscale終了ノードとしてデバイスを宣伝" + +msgid "Attempting to optimize UDP throughput" +msgstr "UDPスループットの最適化を試みる" + +msgid "Kernel transport layer offloads enabled for UDP" +msgstr "UDPのカーネル・トランスポート層のオフロードが有効" + +msgid "Failed to enable kernel transport layer offloads for UDP" +msgstr "UDPのカーネル・トランスポート層のオフロードを有効にできませんでした。" + +msgid "Attempting to set tailscale up" +msgstr "テールスケールの設定を試みる" + +msgid "Attempting to set tailscale down" +msgstr "テールスケールを下げようとする" + +msgid "Attempting to disconnect from tailscale" +msgstr "tailscaleから切断しようとしている" + +msgid "Disconnected from tailscale and expired node key" +msgstr "tailscaleから切断され、ノードキーが失効した。" + +msgid "Unable to disconnect from tailscale" +msgstr "tailscaleから切断できない" + +msgid "Expected tailscale binary not found at: %" +msgstr "に期待した tailscale バイナリが見つかりません:%" + +msgid "A Tailscale VPN exit node extension for RaspAP" +msgstr "RaspAP 用 Tailscale VPN 終了ノード拡張機能" + +msgid "Unable to retrieve Tailscale login. Choose %s to continue." +msgstr "Tailscaleログインを取得できません。続行するには %sを選択してください。" + +msgid "Start Tailscale" +msgstr "テールスケール開始" + +msgid "Stop Tailscale" +msgstr "テールスケール停止" + +msgid "Next" +msgstr "次のページ" + +msgid "Device approved and activated as a Tailscale exit node" +msgstr "テールスケール・エグジット・ノードとして承認され、アクティベートされたデバイス" + +msgid "Not connected: Login required." +msgstr "接続されていません:ログインが必要です。" + +msgid "Tailscale VPN" +msgstr "テールスケールVPN" + +msgid "Exit node activated" +msgstr "終了ノードが起動" + +msgid "The device %s is connected with the address %s and offers an exit node." +msgstr "デバイス %sはアドレス %sで接続され、出口ノードを提供する。" + +msgid "See the %s on how to use this exit node with your devices." +msgstr "この出口ノードをお使いのデバイスで使用する方法については、 %s を参照してください。" + +msgid "Allow exit node" +msgstr "終了ノードを許可する" + +msgid "The device %s is pending approval as an exit node." +msgstr "装置 %sは終了ノードとして承認待ちである。" + +msgid "Locate the %s Exit Node badge in the machines list." +msgstr "マシンリストで %sバッジを見つける。" + +msgid "Open Tailscale Machines" +msgstr "オープン・テールスケール・マシン" + +msgid "To allow this device as an exit node, choose Open Tailscale Machines." +msgstr "このデバイスを終了ノードとして許可するには、Open Tailscale Machinesを選択します。" + +msgid "From the %s icon menu of the exit node, open the %s panel." +msgstr "終了ノードの %s アイコンメニューから、 %s パネルを開く。" + +msgid "Edit route settings" +msgstr "ルート設定の編集" + +msgid "Login to Tailscale" +msgstr "Tailscaleにログイン" + +msgid "To connect device %s to your tailnet, choose %s." +msgstr "デバイス %s をテールネットに接続するには、 %sを選択します。" + +msgid "After logging in, choose Next to continue." +msgstr "ログイン後、Nextを選択して続行します。" + +msgid "Configure exit node" +msgstr "終了ノードの設定" + +msgid "The device %s is connected to your tailnet with the address %s." +msgstr "デバイス %sはアドレス %s." + +msgid "By default, Tailscale only routes traffic between the devices on which it's been installed. You can also route all your public internet traffic by configuring a device on your network as a exit node" +msgstr "デフォルトでは、Tailscaleはインストールされたデバイス間のトラフィックのみをルーティングします。また、ネットワーク上のデバイスを出口ノードとして設定することで、すべてのパブリック・インターネット・トラフィックをルーティングすることもできます。" + +msgid "When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN." +msgstr "すべてのトラフィックを出口ノード経由でルーティングする場合、一般的なVPNを使用する場合と同様に、デフォルトルート(0.0.0.0/0、::/0)を効果的に使用することになる。" + +msgid "You have the option of configuring this device as an exit node, or using another exit node in your tailnet." +msgstr "このデバイスを出口ノードとして設定するか、テールネット内の別の出口ノードを使用するかのオプションがある。" + +msgid "Select an existing exit node on your tailnet" +msgstr "テールネット上の既存の出口ノードを選択します。" + +msgid "This is a typical configuration if you're using this device as a VPN travel router, for example." +msgstr "これは、例えばこのデバイスをVPNトラベル・ルーターとして使う場合の典型的な構成だ。" + +msgid "Configure this device as a new exit node" +msgstr "このデバイスを新しい出口ノードとして設定する" + +msgid "By configuring this device as an exit node, public internet traffic from devices connected in your tailnet will be routed through it." +msgstr "このデバイスを出口ノードとして設定することで、テールネットに接続されているデバイスからのパブリックインターネットトラフィックは、このデバイスを経由してルーティングされる。" + +msgid "For security reasons, you must opt in to enable exit node functionality. The first step is to advertise %s as an exit node in your tailnet. In the next step, you'll allow this device to be an exit node." +msgstr "セキュリティ上の理由から、終了ノード機能を有効にするにはオプトインする必要があります。最初のステップは %sをテールネットの出口ノードとしてアドバタイズすることです。次のステップでは、このデバイスを出口ノードとして許可します。" + +msgid "Advertise %s as an exit node" +msgstr "広告を出す %s出口ノードとして" + +msgid "This effectively configures Tailscale as a VPN to mask your real location, access region-restricted content, or enhance privacy when connecting from untrusted networks." +msgstr "これにより、TailscaleをVPNとして効果的に設定し、実際の場所を隠したり、地域制限のあるコンテンツにアクセスしたり、信頼できないネットワークから接続する際のプライバシーを強化したりすることができます。" + +msgid "This option lets Tailscale know your device is ready to route traffic." +msgstr "このオプションは、Tailscaleにあなたのデバイスがトラフィックをルーティングする準備ができたことを知らせます。" + +msgid "Recommended for Tailscale exit nodes with Linux 6.2 or later kernels, this uses UDP generic receive offload (GRO) forwarding to reduce CPU overhead." +msgstr "Linux 6.2以降のカーネルを搭載したTailscale終了ノードに推奨され、UDP汎用受信オフロード(GRO)転送を使用してCPUオーバーヘッドを削減します。" + +msgid "This option enables transport layer offloads for better performance." +msgstr "このオプションは、パフォーマンスを向上させるためにトランスポート層のオフロードを有効にする。" + +msgid "Select an exit node" +msgstr "出口ノードを選択する" + +msgid "To use %s as a VPN gateway, configure Tailscale to use an exit node. Tailscale's suggested node is indicated with a star." +msgstr "VPNゲートウェイとして %sをVPNゲートウェイとして使用するには、出口ノードを使用するようにTailscaleを設定します。Tailscaleが推奨するノードは星印で示されています。" + +msgid "Advertise a subnet route for the active %s AP interface" +msgstr "アクティブな %sAPインターフェース" + +msgid "Subnet routes let you extend your Tailscale network (known as a tailnet) to include devices that don't or can't run the Tailscale client." +msgstr "サブネット・ルートを使用すると、Tailscaleネットワーク(テールネットと呼ばれる)を拡張して、Tailscaleクライアントを実行しない、または実行できないデバイスを含めることができます。" + +msgid "A subnet route acts as a gateway between your tailnet and a physical subnet. The subnet of the active AP interface is preconfigured below; edit if necessary." +msgstr "サブネットルートは、テールネットと物理サブネット間のゲートウェイとして機能する。アクティブなAPインターフェースのサブネットは以下にあらかじめ設定されています。" + +msgid "Route LAN traffic through the exit node." +msgstr "LANトラフィックを出口ノードにルーティングする。" + +msgid "This will direct all LAN traffic to go through your exit node only." +msgstr "これにより、すべてのLANトラフィックが出口ノードを経由するようになります。" + +msgid "Choose Next to configure %s to use the selected exit node with these options." +msgstr "Next(次へ)を選択して %sを選択して、選択した終了ノードをこれらのオプションで使用します。" + +msgid "No exit nodes found on your tailnet. Choose Back to continue." +msgstr "テールネットに終了ノードが見つかりません。戻る]を選択して続行します。" + +msgid "Using exit node" +msgstr "終了ノードの使用" + +msgid "The device %s is configured to use exit node %s. It has the Tailscale MagicDNS address %s." +msgstr "デバイスは %sは終了ノード %s.TailscaleのMagicDNSアドレスを持っています。 %s." + +msgid "Choose Save settings to continue." +msgstr "Save settings(設定を保存する)を選択して続行します。" + +msgid "Choose Next to continue." +msgstr "Next(次へ)を選択して続けます。" + +msgid "Tailnet status" +msgstr "テールネットの状態" + +msgid "Current tailnet status is displayed below." +msgstr "現在のテールネットの状態は下に表示されています。" + +msgid "Use Tailscale DNS settings (default)." +msgstr "Tailscale DNS設定を使用する(デフォルト)。" + +msgid "Uncheck to use local DNS. This sets --accept-dns=false." +msgstr "ローカルDNSを使用する場合はチェックを外す。これは--accept-dns=falseを設定する。" + +msgid "Do not use Tailscale subnets (default on Linux)." +msgstr "Tailscaleサブネットを使用しない(Linuxのデフォルト)。" + +msgid "If subnet routes exist for your tailnet, you can route your device's traffic to a subnet router. Enabling this sets --accept-routes=true." +msgstr "テールネットにサブネット・ルートが存在する場合、デバイスのトラフィックをサブネット・ルーターにルーティングできる。これを有効にすると、--accept-routes=trueが設定される。" + +msgid "If keys expire for a device, connections to/from the given endpoint will stop working." +msgstr "デバイスのキーの有効期限が切れると、指定したエンドポイントとの接続ができなくなる。" + +msgid "This option uses --force-reauth to renew the keys for this device." +msgstr "このオプションは、-force-reauthを使ってこのデバイスの鍵を更新する。" + +msgid "Start capture" +msgstr "キャプチャ開始" + +msgid "Stop capture" +msgstr "キャプチャ停止" + +msgid "Capture files" +msgstr "キャプチャファイル" + +msgid "Capture interface" +msgstr "キャプチャインターフェース" + +msgid "Output file" +msgstr "出力ファイル" + +msgid "Path where capture file will be saved (.pcap format)" +msgstr "キャプチャファイルを保存するパス(.pcap形式)" + +msgid "File will be saved with .pcap extension" +msgstr "ファイルは .pcap という拡張子で保存されます。" + +msgid "Capture filter (BPF syntax)" +msgstr "キャプチャ・フィルター(BPFシンタックス)" + +msgid "Berkeley Packet Filter syntax. Leave empty to capture all traffic." +msgstr "Berkeley Packet Filterの構文。すべてのトラフィックをキャプチャするには、空のままにします。" + +msgid "Examples: port 80, host 192.168.1.1, tcp and not port 22" +msgstr "例:ポート80ホスト192.168.1.1tcp、ポート22以外" + +msgid "Capture limits" +msgstr "キャプチャーの制限" + +msgid "Packet count limit" +msgstr "パケット数制限" + +msgid "Stop capture after this many packets. Leave empty for unlimited." +msgstr "このパケット数でキャプチャを停止する。無制限の場合は空のままにします。" + +msgid "Duration limit (seconds)" +msgstr "制限時間(秒)" + +msgid "Stop capture after this many seconds. Leave empty for unlimited." +msgstr "何秒後にキャプチャを停止するか。無制限の場合は空のままにします。" + +msgid "Ring buffer settings" +msgstr "リングバッファの設定" + +msgid "File size (KB)" +msgstr "ファイルサイズ (KB)" + +msgid "Create new file when this size is reached. Leave empty to disable." +msgstr "このサイズに達したら新しいファイルを作成する。無効にするには空のままにします。" + +msgid "10000 = 10 MB per file" +msgstr "10000 = 1ファイルあたり10MB" + +msgid "Number of files" +msgstr "ファイル数" + +msgid "Maximum number of ring buffer files to keep. Oldest files are deleted." +msgstr "保持するリング・バッファ・ファイルの最大数。最も古いファイルは削除されます。" + +msgid "Advanced options" +msgstr "高度なオプション" + +msgid "Snapshot length (bytes)" +msgstr "スナップショットの長さ(バイト)" + +msgid "Limit the amount of data captured per packet. Leave empty for full packets." +msgstr "パケットごとにキャプチャするデータ量を制限する。フルパケットの場合は空のままにする。" + +msgid "96 bytes captures headers only, reduces file size" +msgstr "96バイトでヘッダーのみをキャプチャし、ファイルサイズを縮小" + +msgid "Promiscuous mode" +msgstr "プロミスキャス・モード" + +msgid "Capture all packets on the network segment, not just those destined for this interface" +msgstr "このインターフェイス宛のパケットだけでなく、ネットワークセグメント上のすべてのパケットをキャプチャする。" + +msgid "Quick filter presets" +msgstr "クイック・フィルター・プリセット" + +msgid "Capture files generated by tshark are displayed below." +msgstr "tsharkが生成したキャプチャファイルを以下に表示します。" + +msgid "No capture files found in /tmp directory" +msgstr "tmpディレクトリにキャプチャファイルが見つかりません" + +msgid "Filename" +msgstr "ファイル名" + +msgid "Size" +msgstr "サイズ" + +msgid "Modified" +msgstr "変形" + +msgid "Actions" +msgstr "行動" + +msgid "Download file" +msgstr "ダウンロードファイル" + +msgid "Delete file" +msgstr "ファイルの削除" + +msgid "Confirm deletion" +msgstr "削除の確認" + +msgid "Are you sure you want to delete this file?" +msgstr "本当にこのファイルを削除しますか?" + +msgid "All Traffic" +msgstr "すべての交通" + +msgid "HTTP/HTTPS" +msgstr "HTTP/HTTPS" + +msgid "ICMP (Ping)" +msgstr "ICMP (Ping)" + +msgid "SSH" +msgstr "SSH" + +msgid "Exclude SSH" +msgstr "SSHを除く" + +msgid "A Wireshark (TShark) CLI packet capture for RaspAP" +msgstr "RaspAP の Wireshark (TShark) CLI パケットキャプチャー" + +msgid "Information provided by tshark" +msgstr "情報提供:tshark" + +msgid "Total: %d file(s), %s" +msgstr "合計: %d ファイル: %s" + +msgid "Captive portal" +msgstr "キャプティブ・ポータル" + +msgid "Gateway interface" +msgstr "ゲートウェイインターフェース" + +msgid "Gateway name" +msgstr "ゲートウェイ名" + +msgid "Gateway address" +msgstr "ゲートウェイアドレス" + +msgid "Gateway port" +msgstr "ゲートウェイポート" + +msgid "Defaults to the active AP interface, typically wlan0" +msgstr "デフォルトはアクティブな AP インターフェースで、通常はwlan0です。" + +msgid "Auto-detected from gateway interface if not specified" +msgstr "指定がない場合、ゲートウェイインターフェースから自動検出される" + +msgid "Start portal" +msgstr "スタートポータル" + +msgid "Stop portal" +msgstr "ストップポータル" + +msgid "Information provided by nodogsplash" +msgstr "情報提供:nodogsplash" + +msgid "Stop portal service" +msgstr "ポータルサービスの停止" + +msgid "Start portal service" +msgstr "ポータルサービスの開始" + +msgid "Changing the portal service will momentarily disrupt client traffic. Choose Proceed to continue." +msgstr "ポータルサービスを変更すると、クライアントのトラフィックが一時的に中断されます。続行]を選択して続行します。" + +msgid "Interface to be managed by the portal" +msgstr "ポータルが管理するインターフェース" + +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "ゲートウェイの名前 ($gatewayname 変数として利用可能)" + +msgid "IP address of the router. Leave empty for auto-detection" +msgstr "ルーターのIPアドレス。自動検出の場合は空のままにします。" + +msgid "Port for Nodogsplash HTTP server" +msgstr "Nodogsplash HTTPサーバーのポート" + +msgid "Maximum clients" +msgstr "最大顧客数" + +msgid "Session timeout (minutes)" +msgstr "セッションタイムアウト(分)" + +msgid "Pre-auth idle timeout (minutes)" +msgstr "事前認証アイドルタイムアウト(分)" + +msgid "Does not include users on the trusted MAC list" +msgstr "信頼済みMACリストのユーザーを含まない" + +msgid "Auth idle timeout (minutes)" +msgstr "認証アイドルタイムアウト(分)" + +msgid "Check interval (seconds)" +msgstr "チェック間隔(秒)" + +msgid "MAC address control" +msgstr "MACアドレス制御" + +msgid "MAC mechanism" +msgstr "MACメカニズム" + +msgid "Blocked MAC list" +msgstr "ブロックMACリスト" + +msgid "Trusted MAC list" +msgstr "信頼できるMACリスト" + +msgid "These devices are not subject to authentication or firewall rules" +msgstr "これらのデバイスは、認証やファイアウォールのルールの対象にはなりません。" + +msgid "Maximum number of concurrent authenticated users" +msgstr "同時認証ユーザーの最大数" + +msgid "Default session length in minutes. 0 = unlimited" +msgstr "デフォルトのセッションの長さを分単位で指定します。0 = 制限なし" + +msgid "Time before unauthenticated idle users are removed" +msgstr "未認証のアイドル・ユーザーが削除されるまでの時間" + +msgid "Time before authenticated idle users are deauthenticated" +msgstr "認証されたアイドルユーザーが認証解除されるまでの時間" + +msgid "How often to check client timeouts" +msgstr "クライアントのタイムアウトを確認する頻度" + +msgid "Block: blocklisted MACs are blocked. Allow: only allowlisted MACs are allowed" +msgstr "Block:ブロックリストに登録されたMACはブロックされます。許可:許可リストに登録されたMACのみが許可されます。" + +msgid "Example: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" +msgstr "例:00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" + +msgid "Comma-separated MAC addresses that bypass authentication entirely" +msgstr "認証を完全にバイパスするカンマ区切りのMACアドレス" + +msgid "Block (blocklist mode)" +msgstr "ブロック(ブロックリストモード)" + +msgid "Allow (allowlist mode)" +msgstr "許可する(allowlistモード)" + +msgid "Gateway IP range" +msgstr "ゲートウェイIPレンジ" + +msgid "Default: 0.0.0.0/0 (all addresses)" +msgstr "デフォルト:0.0.0.0/0(すべてのアドレス)" + +msgid "Debug level" +msgstr "デバッグレベル" + +msgid "Firewall settings" +msgstr "ファイアウォール設定" + +msgid "Allow all traffic for authenticated users" +msgstr "認証されたユーザーのすべてのトラフィックを許可する" + +msgid "Allow DNS for pre-authenticated users" +msgstr "認証済みユーザーにDNSを許可する" + +msgid "IP range to manage in CIDR notation. Leave empty for all addresses" +msgstr "CIDR表記で管理するIP範囲。すべてのアドレスの場合は空のままにします。" + +msgid "Amount of logging detail reported by the nodogsplash.service" +msgstr "nodogsplash.serviceが報告するロギングの詳細量" + +msgid "0 - Errors only" +msgstr "0 - エラーのみ" + +msgid "1 - Errors, warnings, infos" +msgstr "1 - エラー、警告、情報" + +msgid "2 - Errors, warnings, infos, verbose" +msgstr "2 - エラー、警告、情報、冗長" + +msgid "3 - Errors, warnings, infos, verbose, debug" +msgstr "3 - エラー、警告、情報、冗長、デバッグ" + +msgid "When enabled, authenticated users have unrestricted access" +msgstr "有効にすると、認証されたユーザーは無制限にアクセスできる。" + +msgid "Required for clients to resolve domain names before authentication" +msgstr "認証前にクライアントがドメイン名を解決するために必要" + +msgid "Portal status" +msgstr "ポータル状況" + +msgid "Current nodogsplash status is displayed below." +msgstr "現在のnodogsplashのステータスは以下のように表示されます。" diff --git a/locale/nl_NL/LC_MESSAGES/messages.mo b/locale/nl_NL/LC_MESSAGES/messages.mo index 265bcf1d..8903b533 100644 Binary files a/locale/nl_NL/LC_MESSAGES/messages.mo and b/locale/nl_NL/LC_MESSAGES/messages.mo differ diff --git a/locale/nl_NL/LC_MESSAGES/messages.po b/locale/nl_NL/LC_MESSAGES/messages.po index 4b21a39e..bdbc72ca 100644 --- a/locale/nl_NL/LC_MESSAGES/messages.po +++ b/locale/nl_NL/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2020-04-14 08:51\n" +"PO-Revision-Date: 2025-11-20 08:36\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -12,51 +12,56 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: raspap\n" +"X-Crowdin-Project-ID: 395801\n" "X-Crowdin-Language: nl\n" "X-Crowdin-File: /master/locale/en_US/LC_MESSAGES/messages.po\n" +"X-Crowdin-File-ID: 10\n" #: index.php -msgid "RaspAP Wifi Configuration Portal" -msgstr "RaspAP Wi-Fi configuratie portaal" +msgid "RaspAP WiFi-Configuration Portal" +msgstr "RaspAP WiFi-configuratieportaal" msgid "Toggle navigation" -msgstr "Toon navigatie" +msgstr "Navigatie tonen/verbergen" -msgid "RaspAP Wifi Portal" -msgstr "RaspAP Wi-fi portaal" +msgid "RaspAP Admin Panel" +msgstr "RaspAP Beheerpaneel" msgid "Dashboard" msgstr "Dashboard" msgid "WiFi client" -msgstr "WiFi apparaat" +msgstr "WiFi-client" + +msgid "Status" +msgstr "Status" msgid "Hotspot" msgstr "Hotspot" -msgid "Memory Use" -msgstr "" +msgid "Logging" +msgstr "Logboek" -msgid "CPU Temp" -msgstr "" +msgid "Mem Use" +msgstr "Geheugen" + +msgid "CPU" +msgstr "CPU" msgid "Networking" msgstr "Netwerk" msgid "DHCP Server" -msgstr "DHCP server" +msgstr "DHCP-server" msgid "OpenVPN" msgstr "OpenVPN" msgid "TOR proxy" -msgstr "TOR proxy" +msgstr "TOR-proxy" msgid "Authentication" -msgstr "Autenticatie" - -msgid "Change Theme" -msgstr "Verander thema" +msgstr "Authenticatie" msgid "System" msgstr "Systeem" @@ -66,22 +71,22 @@ msgstr "Over RaspAP" #: includes/admin.php msgid "Authentication settings" -msgstr "Verificatie-instellingen" +msgstr "Authenticatie-instellingen" msgid "New passwords do not match" -msgstr "Nieuw wachtwoord komt niet overeen" +msgstr "Nieuwe wachtwoorden komen niet overeen" msgid "Username must not be empty" msgstr "Gebruikersnaam mag niet leeg zijn" msgid "Admin password updated" -msgstr "Admin wachtwoord geupdate" +msgstr "Beheerderswachtwoord bijgewerkt" msgid "Failed to update admin password" -msgstr "Mislukt om admin wachtwoord te updaten" +msgstr "Bijwerken beheerderswachtwoord mislukt" msgid "Old password does not match" -msgstr "Oud wachtwoord is niet hetzelfde" +msgstr "Oud wachtwoord komt niet overeen" msgid "Username" msgstr "Gebruikersnaam" @@ -95,9 +100,72 @@ msgstr "Nieuw wachtwoord" msgid "Repeat new password" msgstr "Herhaal nieuw wachtwoord" +msgid "Please provide a valid username." +msgstr "Geef een geldige gebruikersnaam op." + +msgid "Please provide a valid password." +msgstr "Geef een geldig wachtwoord op." + +msgid "Please enter your old password." +msgstr "Voer uw oude wachtwoord in." + +msgid "Please enter a new password." +msgstr "Voer een nieuw wachtwoord in." + +msgid "Please re-enter your new password." +msgstr "Voer uw nieuwe wachtwoord opnieuw in." + +msgid "Avatar" +msgstr "Avatar" + +msgid "Click or tap to upload a new user avatar." +msgstr "Klik of tik om een nieuwe gebruikersavatar te uploaden." + +msgid "Image files of type JPG, GIF or PNG are accepted. Max file size: 2 MB." +msgstr "Afbeeldingsbestanden van het type JPG, GIF of PNG worden geaccepteerd. Maximale bestandsgrootte: 2 MB." + +msgid "Reset avatar" +msgstr "Avatar herstellen" + +msgid "Enable limited privilege user" +msgstr "Gebruiker met beperkte rechten inschakelen" + +msgid "This option enables a non-admin user who can access RaspAP's management interface, but has limited ability to modify the existing configuration. This user becomes active when the current admin user is logged-out." +msgstr "Deze optie schakelt een niet-beheerdersgebruiker in die toegang heeft tot de RaspAP beheerinterface, maar beperkte mogelijkheden heeft om de bestaande configuratie te wijzigen. Deze gebruiker wordt actief wanneer de huidige beheerder is uitgelogd." + +msgid "Admin login failed. Please try again." +msgstr "Beheerder login mislukt. Probeer het opnieuw." + +msgid "Limited privilege user mode enabled" +msgstr "Gebruikersmodus met beperkte rechten ingeschakeld" + +msgid "Failed to enable limited privilege user mode" +msgstr "Inschakelen gebruikersmodus met beperkte rechten mislukt" + +msgid "Logout and enable limited user mode" +msgstr "Uitloggen en gebruikersmodus met beperkte rechten inschakelen" + +msgid "Limited user login" +msgstr "Gebruikerslogin met beperkte rechten" + +msgid "Limited user password" +msgstr "Wachtwoord gebruiker met beperkte rechten" + +msgid "This action will save the limited user's credentials and logout the current admin user. Save and enable limited privilege mode?" +msgstr "Deze actie slaat de inloggegevens van de gebruiker met beperkte rechten op en logt de huidige beheerder uit. Opslaan en gebruikersmodus met beperkte rechten inschakelen?" + +msgid "Save and logout" +msgstr "Opslaan en uitloggen" + +msgid "Admin credentials updated successfully" +msgstr "Beheerdersgegevens succesvol bijgewerkt" + +msgid "Limited user credentials updated successfully" +msgstr "Inloggegevens gebruiker met beperkte rechten succesvol bijgewerkt" + #: includes/configure_client.php msgid "Client settings" -msgstr "Client instellingen" +msgstr "Clientinstellingen" msgid "SSID" msgstr "SSID" @@ -111,48 +179,72 @@ msgstr "Beveiliging" msgid "Passphrase" msgstr "Wachtwoordzin" -msgid "Wifi settings updated successfully" -msgstr "Wifi instellingen succesvol opgeslagen." +msgid "WiFi-settings updated successfully" +msgstr "WiFi-instellingen succesvol bijgewerkt" -msgid "Wifi settings updated but cannot restart (cannot execute 'wpa_cli reconfigure')" -msgstr "Wi-Fi instellingen geupdate maar kan niet herstarten (kan niet uitvoeren van 'wpa_cli reconfigure')" +msgid "WiFi-settings updated but cannot restart (cannot execute 'wpa_cli reconfigure')" +msgstr "WiFi-instellingen bijgewerkt maar kan niet herstarten (kan 'wpa_cli reconfigure' niet uitvoeren)" -msgid "Wifi settings failed to be updated" -msgstr "Wi-Fi instellingen konden niet geupdate worden" +msgid "WiFi-settings failed to be updated" +msgstr "WiFi-instellingen konden niet worden bijgewerkt" -msgid "Failed to update wifi settings" -msgstr "Mislukt op wi-fi instellingen te updaten" +msgid "Failed to update WiFi-settings" +msgstr "Bijwerken WiFi-instellingen mislukt" msgid "Rescan" -msgstr "Herscan" +msgstr "Opnieuw scannen" msgid "Update" -msgstr "Update" +msgstr "Bijwerken" msgid "Add" -msgstr "Voeg toe" +msgstr "Toevoegen" msgid "Delete" -msgstr "Verwijder" +msgstr "Verwijderen" msgid "Show" -msgstr "Toon" +msgstr "Tonen" msgid "Hide" msgstr "Verbergen" msgid "Not configured" -msgstr "Niet ingesteld" +msgstr "Niet geconfigureerd" + +msgid "Connected" +msgstr "Verbonden" + +msgid "Known" +msgstr "Bekend" + +msgid "Nearby" +msgstr "In de buurt" msgid "Note: WEP access points appear as 'Open'. RaspAP does not currently support connecting to WEP" -msgstr "Opmerking WEP beveiligde toegangspunten worden als 'Open' getoond. RaspAP heeft geen ondersteuning voor het verbinden met WEP beveiliging." +msgstr "Opmerking: WEP-toegangspunten worden getoond als 'Open'. RaspAP ondersteunt momenteel geen verbindingen met WEP" + +msgid "No WiFi-stations found" +msgstr "Geen WiFi-stations gevonden" + +msgid "Reinitialized wpa_supplicant. Choose Rescan." +msgstr "wpa_supplicant opnieuw geïnitialiseerd. Kies Opnieuw scannen." + +msgid "Click 'Rescan' to search for nearby WiFi-stations." +msgstr "Klik op 'Opnieuw scannen' om te zoeken naar WiFi-stations in de buurt." + +msgid "Click 'Reinitialize' to force reinitialize wpa_supplicant." +msgstr "Klik op 'Opnieuw initialiseren' om wpa_supplicant geforceerd opnieuw te initialiseren." + +msgid "Reinitialize" +msgstr "Opnieuw initialiseren" #: includes/dashboard.php msgid "Interface Information" -msgstr "Interface informatie" +msgstr "Interface-informatie" msgid "Interface Name" -msgstr "Interface naam" +msgstr "Interfacenaam" msgid "IPv4 Address" msgstr "IPv4-adres" @@ -161,34 +253,34 @@ msgid "IPv6 Address" msgstr "IPv6-adres" msgid "Subnet Mask" -msgstr "Subnet mask" +msgstr "Subnetmasker" msgid "Mac Address" -msgstr "mac adres" +msgstr "MAC-adres" msgid "Interface Statistics" -msgstr "Interface statenstieken" +msgstr "Interface-statistieken" msgid "Received Packets" -msgstr "Ontvangen pakketen" +msgstr "Ontvangen pakketten" msgid "Received Bytes" -msgstr "Ontvangen Bytes" +msgstr "Ontvangen bytes" msgid "Transferred Packets" -msgstr "Verzonden pakketen" +msgstr "Verzonden pakketten" msgid "Transferred Bytes" -msgstr "Verzonden Bytes" +msgstr "Verzonden bytes" msgid "Wireless Client" -msgstr "" +msgstr "Draadloze client" msgid "Connected To" -msgstr "Verbinden met" +msgstr "Verbonden met" msgid "AP Mac Address" -msgstr "AP Mac adres" +msgstr "AP MAC-adres" msgid "Bitrate" msgstr "bitrate" @@ -205,8 +297,8 @@ msgstr "Frequentie" msgid "Link Quality" msgstr "Signaal kwaliteit" -msgid "Information provided by ip and iw and from system" -msgstr "Informatie verstrekt door ip en iw en vanuit het systeem" +msgid "Information provided by raspap.system" +msgstr "Informatie verstrekt door raspap.system" msgid "No MAC Address Found" msgstr "Geen MAC adres gevonden" @@ -227,7 +319,7 @@ msgid "Interface is up" msgstr "Interface is up" msgid "Interface is down" -msgstr "" +msgstr "Interface is niet beschikbaar" msgid "Interface already down" msgstr "Interface reeds down" @@ -241,16 +333,148 @@ msgstr "Stop wlan0" msgid "Connected Devices" msgstr "Verbonden Apparaten" +msgid "Client: Ethernet cable" +msgstr "Client: Ethernet kabel" + +msgid "Current status" +msgstr "Huidige status" + +msgid "Ethernet" +msgstr "Ethernet" + +msgid "Client: Smartphone (USB tethering)" +msgstr "Client: Smartphone (USB tethering)" + +msgid "Smartphone" +msgstr "Smartphone" + +msgid "WiFi" +msgstr "WiFi" + +msgid "Repeater" +msgstr "Repeater" + +msgid "Tethering" +msgstr "Tethering" + +msgid "Cellular" +msgstr "Cellulair" + +msgid "AP" +msgstr "AP" + +msgid "Bridged" +msgstr "Overbrugd" + +msgid "Adblock" +msgstr "Adblock" + +msgid "VPN" +msgstr "VPN" + +msgid "Netmask" +msgstr "Netmasker" + +msgid "5G" +msgstr "5G" + +msgid "2.4G" +msgstr "2.4G" + +msgid "%d WLAN %s" +msgstr "%d WLAN %s" + +msgid "client" +msgid_plural "clients" +msgstr[0] "klant" +msgstr[1] "klanten" + +msgid "Mobile Data Client" +msgstr "Mobiele Data Client" + +msgid "Mobile Data" +msgstr "Mobiele Data" + +msgid "No information available" +msgstr "Geen informatie beschikbaar" + +msgid "Interface name invalid" +msgstr "Interface naam niet ongeldig" + +msgid "Required exec function is disabled. Check if exec is not added to php disable_functions." +msgstr "Benodigde exec functie gedeactiveerd. Controleer of exec niet is toegevoegd aan php disable_functions." + +msgid "Waiting for the interface to start ..." +msgstr "Wachten tot de interface start ..." + +msgid "Stop the Interface" +msgstr "Stop de interface" + +msgid "Connection mode" +msgstr "Connectie modus" + +msgid "Signal quality" +msgstr "Signaal kwaliteit" + +msgid "WAN IP" +msgstr "WAN IP" + +msgid "Signal strength" +msgstr "Signaal sterkte" + +msgid "No Client device or not yet configured" +msgstr "Geen client toestel of nog niet geconfigureerd" + +msgid "No Client device found" +msgstr "Geen client toestel gevonden" + +#: includes/footer.php +msgid "Created by the %s" +msgstr "Gemaakt door de %s" + +msgid "RaspAP Team" +msgstr "RaspAP-team" + +msgid "Get Insiders" +msgstr "Insiders krijgen" + +msgid "Thanks for being an Insider" +msgstr "Bedankt dat je een Insider bent" + #: includes/dhcp.php msgid "DHCP server settings" msgstr "DHCP-serverinstellingen" +msgid "Default gateway" +msgstr "Standaard gateway" + +msgid "Install a default route for this interface" +msgstr "Installeer een standaard route voor deze interface" + +msgid "Static IP options" +msgstr "Statische IP-opties" + +msgid "DHCP options" +msgstr "DHCP-opties" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Schakel deze optie in als u wilt dat RaspAP IP-adressen toekent aan clients op de geselecteerde interface. Een statisch IP adres is vereist voor deze optie." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Schakel dit alleen in als je wilt dat je apparaat deze interface als primaire route naar het internet gebruikt." + msgid "Client list" msgstr "Clienten lijst" msgid "Interface" msgstr "Interface" +msgid "Enable DHCP for this interface" +msgstr "Schakel DHCP in voor deze interface" + +msgid "Enable this option if you want RaspAP to assign IP addresses on the selected interface." +msgstr "Schakel deze optie in als je wilt dat RaspAP IP-adressen toewijst op de geselecteerde interface." + msgid "DNS Server" msgstr "DNS server" @@ -281,6 +505,9 @@ msgstr "Verloop tijd" msgid "MAC Address" msgstr "MAC adres" +msgid "Optional comment" +msgstr "Optionele commentaar" + msgid "Host name" msgstr "Hostnaam" @@ -291,10 +518,10 @@ msgid "Information provided by Dnsmasq" msgstr "Informatie gegeven door Dnsmasq" msgid "Stop dnsmasq" -msgstr "" +msgstr "Stop dnsmasq" msgid "Start dnsmasq" -msgstr "" +msgstr "Start dnsmasq" msgid "Dnsmasq configuration updated successfully" msgstr "Dnsmasq configuratie succesvol geupdate" @@ -324,31 +551,103 @@ msgid "Dnsmasq is not running" msgstr "Dnsmasq is gestopt" msgid "Upstream DNS servers" -msgstr "" +msgstr "Upstream DNS server toevoegen" msgid "Only ever query DNS servers configured below" -msgstr "" +msgstr "Alleen DNS-servers hieronder geconfigureerd bevragen" msgid "Enable this option if you want RaspAP to send DNS queries to the servers configured below exclusively. By default RaspAP also uses its upstream DHCP server's name servers." -msgstr "" +msgstr "Schakel deze optie in als u RaspAP wilt om DNS-query's te sturen naar de servers hieronder exclusief. Standaard gebruikt RaspAP ook de upstream van de DHCP-server van de naamservers." msgid "This option adds no-resolv to the dnsmasq configuration." -msgstr "" +msgstr "Deze optie voegt no-resolv toe aan de dnsmasq configuratie." msgid "Add upstream DNS server" -msgstr "" +msgstr "Upstream DNS server toevoegen" msgid "Format" msgstr "Formaat" msgid "Choose a hosted server" -msgstr "" +msgstr "Kies een gehoste server" + +msgid "Enable these options to log dhcpcd and dnsmasq activity." +msgstr "Activeer deze optie om de activiteit van dhcpcd en dnsmasq te loggen." msgid "Log DHCP requests" -msgstr "" +msgstr "DHCP-aanvragen registreren" msgid "Log DNS queries" -msgstr "" +msgstr "Log DNS-zoekopdrachten" + +msgid "Restrict access" +msgstr "Beperkte toegang" + +msgid "Limit network access to static clients" +msgstr "Beperkt netwerk toegang tot statische cliënten" + +msgid "Enable this option if you want RaspAP to ignore any clients which are not specified in the static leases list." +msgstr "Activeer deze optie als je wil dat RaspAP gelijk welke client negeert die niet in de statische leases lijst." + +msgid "This option adds dhcp-ignore to the dnsmasq configuration." +msgstr "Deze optie voegt dhcp-ignore toe aan de dnsmasq configuratie." + +msgid "Clients with a particular hardware MAC address can always be allocated the same IP address." +msgstr "Cliënten met een specifieke hardware MAC-adres kunnen steeds hetzelfde IP-adres toegewezen krijgen." + +msgid "This option adds dhcp-host entries to the dnsmasq configuration." +msgstr "Deze optie voegt dhcp-host entries toe aan de dnsmasq configuratie." + +msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." +msgstr "Dit schakelt de gateway/nogateway optie in voor deze interface in het dhcpcd.conf bestand." + +msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." +msgstr "Dit schakelt de nohook wpa_supplicant optie in voor deze interface in het dhcpcd.conf bestand." + +msgid "Disable wpa_supplicant dhcp hook for this interface" +msgstr "Schakel wpa_supplicant dhcp hook uit voor deze interface" + +msgid "If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook." +msgstr "Als je draadloze verbindingen beheert met wpa_supplicant zelf, dan kan de hook ongewenste verbindingsgebeurtenissen creëren. Deze optie schakelt de haak uit." + +msgid "Please provide a valid IP Address." +msgstr "Geef een geldig IP-adres op." + +msgid "Please provide a valid Default gateway." +msgstr "Geef een geldige standaardgateway op." + +msgid "Please provide a valid Starting IP Address." +msgstr "Geef een geldig start-IP-adres op." + +msgid "Please provide a valid Ending IP Address." +msgstr "Geef een geldig eind-IP-adres op." + +msgid "Please provide a valid Lease Time." +msgstr "Geef een geldige leasetijd op." + +msgid "Invalid interface name." +msgstr "Ongeldige interfacenaam." + +msgid "Invalid static IP address." +msgstr "Ongeldig statisch IP-adres." + +msgid "Invalid default gateway." +msgstr "Ongeldige standaard gateway." + +msgid "Invalid DHCP range start." +msgstr "Ongeldige start DHCP-bereik." + +msgid "Invalid DHCP range end." +msgstr "Ongeldig einde DHCP-bereik." + +msgid "Invalid DHCP lease time, not a number." +msgstr "Ongeldige DHCP leasetijd, geen getal." + +msgid "Unknown DHCP lease time unit." +msgstr "Onbekende leasetijdseenheid voor DHCP." + +msgid "Invalid metric value, not a number." +msgstr "Ongeldige metrische waarde, geen getal." #: includes/hostapd.php msgid "Basic" @@ -372,8 +671,8 @@ msgstr "Beveiliging type" msgid "Encryption Type" msgstr "Encryptie modus" -msgid "PSK" -msgstr "PSK" +msgid "Pre-shared key (PSK)" +msgstr "Vooraf gedeelde sleutel (PSK)" msgid "Advanced settings" msgstr "Gevanceerde instellingen" @@ -408,14 +707,29 @@ msgstr "Onbekende interface" msgid "Country code must be blank or two characters" msgstr "Land code moet leeg zijn of twee tekens" -msgid "Wifi Hotspot settings saved" -msgstr "Wi-Fi hostspot instellingen opgeslagen" +msgid "DHCP configuration for %s enabled." +msgstr "DHCP-configuratie voor %s ingeschakeld." -msgid "Unable to save wifi hotspot settings" -msgstr "Mislukt om Wi-FI Hotspot instellen op te slaan" +msgid "DHCP configuration for %s added." +msgstr "DHCP-configuratie voor %s toegevoegd." + +msgid "DHCP configuration for %s updated." +msgstr "DHCP-configuratie voor %s bijgewerkt." + +msgid "Interface %s has no default settings." +msgstr "Interface %s heeft geen standaardinstellingen." + +msgid "Configure settings in DHCP Server before starting AP." +msgstr "Configureer de instellingen in DHCP Server voordat u AP start." + +msgid "WiFi-hotspot settings saved." +msgstr "Wifi-hotspotinstellingen opgeslagen." + +msgid "Unable to save WiFi hotspot settings." +msgstr "Kan WiFi-hotspotinstellingen niet opslaan." msgid "Start hotspot" -msgstr "" +msgstr "Hotspot starten" msgid "Stop hotspot" msgstr "Stop hotstop" @@ -429,11 +743,38 @@ msgstr "Logboek inschakelen" msgid "Logfile output" msgstr "Logboek uitvoer" +msgid "Log level" +msgstr "Logniveau" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "Hogere niveaus verminderen de verbositeit van het logboek. Informatief wordt aanbevolen." + +msgid "Verbose debugging" +msgstr "Uitgebreid debuggen" + +msgid "Debugging" +msgstr "Debuggen op" + +msgid "Informational" +msgstr "Informatief" + +msgid "Notification" +msgstr "Melding" + +msgid "Warning" +msgstr "Waarschuwing" + msgid "WiFi client AP mode" msgstr "WiFi-client AP-modus" msgid "Bridged AP mode" -msgstr "" +msgstr "Brug AP modus" + +msgid "WiFi repeater mode" +msgstr "WiFi-repeatermodus" + +msgid "Dual band AP mode" +msgstr "Dubbele band AP-modus" msgid "Hide SSID in broadcast" msgstr "Verberg SSID in uitzending" @@ -441,13 +782,178 @@ msgstr "Verberg SSID in uitzending" msgid "Maximum number of clients" msgstr "Maximaal aantal klanten" -msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." -msgstr "Configureert de optie 'max_num_sta' van hostapd. Standaard is de maximale waarde van 2007 ingesteld. Indien leeg of 0 wordt de standaard toegepast." +msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." +msgstr "Configureert de max_num_sta optie van hostapd. De standaardwaarde en het maximum is 2007. Als het leeg is of 0, geldt de standaardwaarde." + +msgid "Beacon interval" +msgstr "Baken interval" + +msgid "Disable disassoc_low_ack" +msgstr "Schakel disassoc_low_ack uit" + +msgid "Do not disassociate stations based on excessive transmission failures." +msgstr "Ontkoppel stations niet op basis van buitensporige transmissiefouten." + +msgid "Executing RaspAP service start" +msgstr "RaspAP-service starten" + +msgid "Close" +msgstr "Sluiten" + +msgid "Enable this option to log hostapd activity." +msgstr "Schakel deze optie in om hostapd activiteit te loggen." + +msgid "Transmit power (dBm)" +msgstr "Zendvermogen (dBm)" + +msgid "Sets the txpower option for the AP interface and the configured country." +msgstr "Stelt de txpower optie in voor de AP interface en het geconfigureerde land." + +msgid "dBm is a unit of level used to indicate that a power ratio is expressed in decibels (dB) with reference to one milliwatt (mW). 30 dBm is equal to 1000 mW, while 0 dBm equals 1.25 mW." +msgstr "dBm is een niveau-eenheid die wordt gebruikt om aan te geven dat een vermogensverhouding wordt uitgedrukt in decibel (dB) ten opzichte van één milliwatt (mW). 30 dBm is gelijk aan 1000 mW, terwijl 0 dBm gelijk is aan 1,25 mW." + +msgid "WPA and WPA2" +msgstr "WPA en WPA2" + +msgid "WPA2 and WPA3-Personal (transitional mode)" +msgstr "WPA2 en WPA3-Personal (overgangsmodus)" + +msgid "WPA3-Personal (required)" +msgstr "WPA3-Personal (vereist)" + +msgid "Enabled (for supported clients)" +msgstr "Ingeschakeld (voor ondersteunde clients)" + +msgid "Required (for supported clients)" +msgstr "Vereist (voor ondersteunde klanten)" + +msgid "802.11w extends strong cryptographic protection to a select set of robust management frames, including Deauthentication, Disassociation and certain categories of Action Management frames. Collectively, this is known as Management Frame Protection (MFP)." +msgstr "802.11w breidt sterke cryptografische bescherming uit naar een selecte set robuuste beheerframes, waaronder Deauthentication, Disassociation en bepaalde categorieën van Action Management frames. Samen staat dit bekend als Management Frame Protection (MFP)." + +msgid "Scan this QR code directly or %s %sprint a sign%s for your users." +msgstr "Scan deze QR code direct of %s %sprint een bord%s voor je gebruikers." + +msgid "Printable WiFi sign" +msgstr "Printbaar WiFi-bord" + +msgid "To connect with your phone or tablet, scan the QR code above with your camera app." +msgstr "Om verbinding te maken met je telefoon of tablet, scan je de QR-code hierboven met je camera-app." + +msgid "For other devices, use the login credentials below." +msgstr "Gebruik de onderstaande aanmeldingsgegevens voor andere apparaten." + +msgid "Network" +msgstr "Netwerk" + +msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only." +msgstr "De geselecteerde interface (%s) biedt alleen ondersteuning voor de 2,4 GHz draadloze band." + +msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only." +msgstr "De geselecteerde interface (%s) ondersteunt alleen de 2,5 GHz draadloze band." + +msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands." +msgstr "De geselecteerde interface (%s) heeft ondersteuning voor zowel de 2.4 als de 5 GHz draadloze band." + +msgid "The selected interface (%s) does not support wireless mode operation." +msgstr "De geselecteerde interface (%s) ondersteunt de draadloze modus niet." + +msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set." +msgstr "De 802.11ac 5 GHz optie is uitgeschakeld totdat een compatibel draadloos reguleringsdomein is ingesteld." + +msgid "WiFi repeater mode: A metric value is already defined for DHCP." +msgstr "WiFi-repeatermodus: Er is al een metrische waarde gedefinieerd voor DHCP." + +msgid "Restart hotspot to enable WiFi repeater mode." +msgstr "Herstart hotspot om WiFi repeater-modus in te schakelen." + +msgid "Unable to obtain metric value for client interface. Repeater mode inactive." +msgstr "Kan metrische waarde voor clientinterface niet verkrijgen. Repeater-modus inactief." + +msgid "Metric value configured for the %s interface." +msgstr "Metric waarde geconfigureerd voor de %s interface." + +msgid "Parameter hiddenSSID contains invalid configuration value." +msgstr "Parameter hiddenSSID bevat ongeldige configuratiewaarde." + +msgid "Parameter hiddenSSID is not a number." +msgstr "Parameter hiddenSSID is geen getal." + +msgid "Bridge interface configuration" +msgstr "Configuratie van de bridge-interface" + +msgid "Configure a static IP address for the br0 interface to maintain connectivity during bridge mode activation." +msgstr "Configureer een statisch IP adres voor de br0 interface om de connectiviteit te behouden tijdens het activeren van bridge-modus." + +msgid "Static IP Address" +msgstr "Statisch IP-adres" + +msgid "Netmask / CIDR" +msgstr "Netmasker / CIDR" + +msgid "Example: 192.168.1.100" +msgstr "Voorbeeld: 192.168.1.100" + +msgid "CIDR notation (e.g., 24 for 255.255.255.0)" +msgstr "CIDR-notatie (bijvoorbeeld 24 voor 255.255.255.0)" + +msgid "Gateway" +msgstr "Gateway" + +msgid "Your router's IP address" +msgstr "Het IP-adres van je router" + +msgid "Usually same as gateway" +msgstr "Meestal hetzelfde als gateway" + +msgid "Bridge static IP address must be a valid IPv4 address" +msgstr "Het statische IP-adres van de brug moet een geldig IPv4-adres zijn." + +msgid "Bridge netmask must be a number between 1 and 32" +msgstr "Het bridge netmask moet een getal zijn tussen 1 en 32" + +msgid "Bridge netmask is required when using static IP" +msgstr "Het bridge netmask is nodig bij gebruik van statische IP" + +msgid "Bridge gateway must be a valid IPv4 address" +msgstr "De gateway van de bridge moet een geldig IPv4-adres zijn" + +msgid "Bridge gateway is required when using static IP" +msgstr "Bridge Gateway is vereist bij gebruik van statische IP" + +msgid "Bridge DNS server must be a valid IPv4 address" +msgstr "De DNS-server van de brug moet een geldig IPv4-adres zijn." + +msgid "Bridge DNS server is required when using static IP" +msgstr "Brug DNS server is nodig bij gebruik van statische IP" + +msgid "Bridge static IP and gateway must be in the same subnet" +msgstr "Het statische IP van de brug en de gateway moeten in hetzelfde subnet liggen" + +msgid "Please enter a valid IPv4 address" +msgstr "Voer een geldig IPv4-adres in" + +msgid "Please enter a valid netmask" +msgstr "Voer een geldig netmask in" + +msgid "DHCP configuration for br0 enabled" +msgstr "DHCP-configuratie voor br0 ingeschakeld" + +msgid "Unable to save WiFi hotspot settings due to validation errors" +msgstr "Kan WiFi-hotspotinstellingen niet opslaan vanwege validatiefouten" + +msgid "Enable AP isolation" +msgstr "AP-isolatie inschakelen" + +msgid "Blocks wireless clients from seeing or connecting to each other. Recommended for guest networks and public access points." +msgstr "Blokkeert draadloze clients om elkaar te zien of om verbinding met elkaar te maken. Aanbevolen voor gastnetwerken en openbare toegangspunten." #: includes/networking.php msgid "Summary" msgstr "Samenvatting" +msgid "Internet connection" +msgstr "Internetverbinding" + msgid "Current settings" msgstr "Huidige instellingen" @@ -460,8 +966,11 @@ msgstr "Alternatieve DNS-server" msgid "Adapter IP Address Settings" msgstr "IP-adresinstellingen van adapter" -msgid "Enable Fallback to Static Option" -msgstr "Terugvallen op statische optie inschakelen" +msgid "Enable fallback to static option" +msgstr "Terugval naar statische optie inschakelen" + +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Schakel deze optie in om een statisch profiel te configureren en hierop terug te vallen als de DHCP lease mislukt." msgid "Static IP" msgstr "Statische IP" @@ -475,12 +984,165 @@ msgstr "Uitgeschakeld" msgid "Static IP Options" msgstr "Statische IP-opties" +msgid "Metric" +msgstr "Meeteenheid" + msgid "Apply settings" msgstr "Instellingen toepassen" msgid "Information provided by /sys/class/net" msgstr "Informatie verstrekt door /sys/class/net" +msgid "Devices" +msgstr "Apparaten" + +msgid "Diagnostics" +msgstr "Diagnostiek" + +msgid "Network devices" +msgstr "Netwerkapparaten" + +msgid "Device" +msgstr "Apparaat" + +msgid "MAC address" +msgstr "MAC-adres" + +msgid "USB vid/pid" +msgstr "USB vid/pid" + +msgid "Device type" +msgstr "Type apparaat" + +msgid "Fixed name" +msgstr "Vaste naam" + +msgid "Change" +msgstr "Verander" + +msgid "Mobile data settings" +msgstr "Instellingen mobiele gegevens" + +msgid "SIM card PIN number" +msgstr "PIN-code SIM-kaart" + +msgid "APN Settings (Modem device ppp0)" +msgstr "APN-instellingen (modemapparaat ppp0)" + +msgid "Access Point Name (APN)" +msgstr "Naam toegangspunt (APN)" + +msgid "Password" +msgstr "Wachtwoord" + +msgid "Successfully Updated Network Configuration" +msgstr "Succesvol bijgewerkte netwerkconfiguratie" + +msgid "Error saving network configuration to file" +msgstr "Fout bij het opslaan van netwerkconfiguratie in bestand" + +msgid "Unable to detect interface" +msgstr "Interface kan niet worden gedetecteerd" + +msgid "Routing table" +msgstr "Routeertabel" + +msgid "raw output" +msgstr "ruwe output" + +msgid "Setting wireless regulatory domain to %s" +msgstr "Draadloos reguleringsdomein instellen op %s" + +msgid "Please provide a valid SSID." +msgstr "Geef een geldige SSID op." + +msgid "Please provide a valid PSK." +msgstr "Geef een geldige PSK op." + +msgid "Speedtest" +msgstr "Snelheidstest" + +msgid "Selecting a server" +msgstr "Een server selecteren" + +msgid "Privacy" +msgstr "Privacy" + +msgid "Server" +msgstr "Server" + +msgid "ms" +msgstr "ms" + +msgid "Mbps" +msgstr "Mbps" + +msgid "Ping" +msgstr "Ping" + +msgid "Jitter" +msgstr "Jitter" + +msgid "Upload" +msgstr "Uploaden" + +msgid "Start" +msgstr "Start" + +msgid "Abort" +msgstr "Afbreken" + +msgid "Wireless LAN routing" +msgstr "Draadloze LAN-routering" + +msgid "Stop WLAN routing" +msgstr "WLAN-routering stoppen" + +msgid "Start WLAN routing" +msgstr "WLAN-routering starten" + +msgid "Restart WLAN routing" +msgstr "WLAN-routering opnieuw starten" + +msgid "This option configures RaspAP to route network traffic from your wireless client (STA) interface to another available interface." +msgstr "Deze optie configureert RaspAP om netwerkverkeer van je draadloze client (STA) interface naar een andere beschikbare interface te routeren." + +msgid "When an output interface is selected, iptables rules are added to route packets using network address translation (NAT). This is often done to share internet connectivity from a WLAN with devices on an eth0, usb0 or predictable enx interface." +msgstr "Wanneer een uitvoerinterface wordt geselecteerd, worden iptables regels toegevoegd om pakketten te routeren met behulp van network address translation (NAT). Dit wordt vaak gedaan om internetconnectiviteit van een WLAN te delen met apparaten op een eth0, usb0 of voorspelbare enx interface." + +msgid "Wireless client interface" +msgstr "Draadloze cliëntinterface" + +msgid "Output interface" +msgstr "Uitvoerinterface" + +msgid "Configure a static IP address and DHCP for output interface" +msgstr "Een statisch IP-adres en DHCP configureren voor de uitvoerinterface" + +msgid "Attempting to enable routing between %s and %s interfaces" +msgstr "Poging om routing in te schakelen tussen %s en %s interfaces" + +msgid "Attempting to disable routing between %s and %s interfaces" +msgstr "Poging om routing uit te schakelen tussen %s en %s interfaces" + +msgid "No default DHCP configuration exists for the %s interface" +msgstr "Er bestaat geen standaard DHCP-configuratie voor de interface %s ." + +msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" +msgstr "Configureer een statische IP en DHCP voor deze interface in DHCP-serverinstellingen" + +msgid "WLAN routing configuration saved" +msgstr "WLAN-routeringsconfiguratie opgeslagen" + +msgid "Unable to save WLAN routing configuration" +msgstr "WLAN-routeringsconfiguratie kan niet worden opgeslagen" + +msgid "Successfully restarted dnsmasq" +msgstr "Succesvol herstarten van dnsmasq" + +msgid "Failed to restart dnsmasq" +msgstr "Het herstarten van dnsmasq is mislukt" + #: includes/system.php msgid "System Information" msgstr "Systeeminformatie" @@ -498,7 +1160,7 @@ msgid "Language setting saved" msgstr "Taalinstellingen opgeslagen" msgid "Console" -msgstr "" +msgstr "Console" msgid "Hostname" msgstr "Hostnaam" @@ -507,33 +1169,236 @@ msgid "Pi Revision" msgstr "Pi-Revisie" msgid "Uptime" -msgstr "" +msgstr "Uptime" + +msgid "System Time" +msgstr "Systeem Tijd" msgid "Memory Used" msgstr "Geheugen gebruik" +msgid "Storage Used" +msgstr "Gebruikte opslag" + msgid "CPU Load" msgstr "CPU-belasting" +msgid "CPU Temp" +msgstr "CPU-temp" + msgid "Reboot" msgstr "Opnieuw opstarten" msgid "Shutdown" msgstr "Afsluiten" +msgid "System reboot" +msgstr "Systeem herstarten" + +msgid "System shutdown" +msgstr "Systeem uitschakelen" + +msgid "Reboot now? The system will be temporarily unavailable." +msgstr "Nu herstarten? Het systeem zal tijdelijk niet beschikbaar zijn." + +msgid "Shutdown now? The system will be unavailable." +msgstr "Nu afsluiten? Het systeem zal niet beschikbaar zijn." + msgid "System Rebooting Now!" msgstr "Systeem start nu opnieuw op!" msgid "System Shutting Down Now!" msgstr "Systeem wordt nu uitgeschakeld!" -#: includes/themes.php +msgid "Web server port" +msgstr "Web server poort" + +msgid "Web server bind address" +msgstr "Adres binding webserver" + +msgid "OS" +msgstr "OS" + +msgid "Kernel" +msgstr "Kernel" + +msgid "System reset" +msgstr "Systeem resetten" + +msgid "Reset RaspAP to its initial configuration? This action cannot be undone." +msgstr "RaspAP terugzetten naar de initiële configuratie? Deze actie kan niet ongedaan worden gemaakt." + +msgid "Reset complete. Restart the hotspot for the changes to take effect." +msgstr "Reset voltooid. Start de hotspot opnieuw op om de wijzigingen van kracht te laten worden." + +msgid "System reset in progress..." +msgstr "Systeem wordt gereset..." + +msgid "Reset" +msgstr "Reset" + +msgid "Restore settings" +msgstr "Instellingen herstellen" + +msgid "To reset RaspAP to its initial configuration, click or tap the button below." +msgstr "Klik of tik op de onderstaande knop om RaspAP terug te zetten naar de beginconfiguratie." + +msgid "Custom files for optional components such as Ad Blocking, WireGuard or OpenVPN will remain on the system." +msgstr "Aangepaste bestanden voor optionele onderdelen zoals Ad Blocking, WireGuard of OpenVPN blijven op het systeem staan." + +msgid "Perform reset" +msgstr "Reset uitvoeren" + +msgid "Restores all access point (AP) service settings to their default values. This applies to hostapd, dhcpcd and dnsmasq." +msgstr "Herstelt alle service-instellingen van het toegangspunt (AP) naar hun standaardwaarden. Dit geldt voor hostapd, dhcpcd en dnsmasq." + msgid "Theme settings" msgstr "Thema-instellingen" msgid "Select a theme" msgstr "Selecteer een thema" +msgid "Color" +msgstr "Kleur" + +msgid "Enable this option for resizable, drag and drop widgets. Best for large displays." +msgstr "Schakel deze optie in voor aanpasbare, versleepbare widgets. Het beste voor grote beeldschermen." + +msgid "Dynamic widgets" +msgstr "Dynamische widgets" + +msgid "Tools" +msgstr "Gereedschap" + +msgid "System tools" +msgstr "Systeemtools" + +msgid "To generate a system debug log, click or tap the button below." +msgstr "Klik of tik op de onderstaande knop om een debuglog van het systeem te genereren." + +msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." +msgstr "Debug log informatie bevat de RaspAP versie, huidige status en configuratie van AP gerelateerde diensten, geïnstalleerde systeempakketten, Linux kernel versie en netwerkdetails. Er worden geen wachtwoorden of andere gevoelige gegevens opgenomen." + +msgid "Generate debug log" +msgstr "Debug-logboek genereren" + +msgid "Debug log generation in progress..." +msgstr "Debug log genereren bezig..." + +msgid "Diagnostic log size limit (KB)" +msgstr "Limiet diagnostische loggrootte (KB)" + +msgid "Changing log limit size to %s KB" +msgstr "Logboeklimiet wijzigen naar %s KB" + +msgid "Information provided by raspap.sysinfo" +msgstr "Informatie geleverd door raspap.sysinfo" + +msgid "The following user plugins are available to extend RaspAP's functionality." +msgstr "De volgende gebruikersplugins zijn beschikbaar om de functionaliteit van RaspAP uit te breiden." + +msgid "Choose Details for more information and to install a plugin." +msgstr "Kies Details voor meer informatie en om een plugin te installeren." + +msgid "Network error" +msgstr "Netwerkfout" + +msgid "Unable to load plugins" +msgstr "Kan geen plugins laden" + +msgid "Reload" +msgstr "Herladen" + +msgid "and try again" +msgstr "en probeer het opnieuw" + +msgid "Plugins" +msgstr "Plugins" + +msgid "Plugin details" +msgstr "Plugin details" + +msgid "Name" +msgstr "Naam" + +msgid "Version" +msgstr "Versie" + +msgid "Description" +msgstr "Beschrijving" + +msgid "Plugin source" +msgstr "Plugin bron" + +msgid "Author" +msgstr "Auteur" + +msgid "License" +msgstr "Licentie" + +msgid "Language locale" +msgstr "Taal locale" + +msgid "Configuration files" +msgstr "Configuratiebestanden" + +msgid "Dependencies" +msgstr "Afhankelijkheden" + +msgid "Permissions" +msgstr "Rechten" + +msgid "Non-privileged users" +msgstr "Niet-geprivilegieerde gebruikers" + +msgid "Install now" +msgstr "Nu installeren" + +msgid "Installing plugin" +msgstr "Plugin installeren" + +msgid "Plugin installation in progress..." +msgstr "Plugin installatie bezig..." + +msgid "Plugin install completed." +msgstr "Installatie van plugin voltooid." + +msgid "Details" +msgstr "Details" + +msgid "Installed" +msgstr "Geïnstalleerd" + +msgid "Alert messages" +msgstr "Waarschuwingsberichten" + +msgid "Alert close timeout (milliseconds)" +msgstr "Time-out waarschuwing sluiten (milliseconden)" + +msgid "Automatically close alerts after a specified timeout" +msgstr "Meldingen automatisch sluiten na een opgegeven time-out" + +msgid "To inspect adapters attached to this device, click or tap the button below." +msgstr "Klik of tik op de onderstaande knop om de adapters te inspecteren die op dit apparaat zijn aangesloten." + +msgid "The adapter inspection tool returns details about external WLAN devices including drivers, supported modes and so on." +msgstr "Het hulpmiddel voor adapterinspectie geeft details over externe WLAN-apparaten, inclusief stuurprogramma's, ondersteunde modi enzovoort." + +msgid "Choose a network interface to inspect" +msgstr "Kies een netwerkinterface om te inspecteren" + +msgid "Select an interface..." +msgstr "Selecteer een interface..." + +msgid "Adapter health check" +msgstr "Gezondheidscontrole adapter" + +msgid "Inspect adapters" +msgstr "Adapters inspecteren" + +msgid "Theme" +msgstr "Thema" + #: includes/data_usage.php msgid "Data usage" msgstr "Datagebruik" @@ -551,7 +1416,7 @@ msgid "Monthly traffic amount" msgstr "Verkeer per maand" msgid "Hourly" -msgstr "Pur uur" +msgstr "Per uur" msgid "Daily" msgstr "Per dag" @@ -560,7 +1425,7 @@ msgid "Monthly" msgstr "Per maand" msgid "interface" -msgstr "" +msgstr "interface" msgid "date" msgstr "datum" @@ -632,6 +1497,66 @@ msgstr "We proberen openvpn op te starten" msgid "Attempting to stop openvpn" msgstr "We proberen openvpn te stoppen" +msgid "Configurations" +msgstr "Configuraties" + +msgid "Currently available OpenVPN client configurations are displayed below." +msgstr "Momenteel beschikbare OpenVPN-clientconfiguraties worden hieronder weergegeven." + +msgid "Activating a configuration will restart the openvpn-client service." +msgstr "Het activeren van een configuratie herstart de openvpn-client service." + +msgid "Delete OpenVPN client" +msgstr "OpenVPN-client verwijderen" + +msgid "Delete client configuration? This cannot be undone." +msgstr "Clientconfiguratie verwijderen? Dit kan niet ongedaan worden gemaakt." + +msgid "Activate OpenVPN client" +msgstr "OpenVPN-client activeren" + +msgid "Activate client configuration? This will restart the openvpn-client service." +msgstr "Clientconfiguratie activeren? Dit herstart de openvpn-client service." + +msgid "Activate" +msgstr "Activeer" + +msgid "Cancel" +msgstr "Annuleren" + +msgid "Enable this option to log openvpn activity." +msgstr "Schakel deze optie in om openvpn-activiteit te loggen." + +msgid "Authentification Method" +msgstr "Authentificatiemethode" + +msgid "Username and password" +msgstr "Gebruikersnaam en wachtwoord" + +msgid "Certificates" +msgstr "Certificaten" + +msgid "Enter username and password" +msgstr "Voer gebruikersnaam en wachtwoord in" + +msgid "Certificates in the configuration file" +msgstr "Certificaten in het configuratiebestand" + +msgid "RaspAP supports certificates by including them in the configuration file." +msgstr "RaspAP ondersteunt certificaten door ze op te nemen in het configuratiebestand." + +msgid "Signing certification authority (CA) certificate (e.g. ca.crt): enclosed in <ca> ... </ca> tags." +msgstr "Certificaat van de ondertekenende certificeringsautoriteit (CA) (bijv. ca.crt): ingesloten in <ca> ... </ca> tags." + +msgid "Client certificate (public key) (e.g. client.crt): enclosed in <cert> ... </cert> tags." +msgstr "Clientcertificaat (openbare sleutel) (bijv. client.crt): ingesloten in <cert> ... </cert> tags." + +msgid "Private key of the client certificate (e.g. client.key): enclosed in <key> ... </key> tags." +msgstr "Privésleutel van het cliëntcertificaat (bijv. client.key): ingesloten in <key> ... </key> tags." + +msgid "Configuration File" +msgstr "Configuratiebestand" + #: includes/torproxy.php msgid "TOR is not running" msgstr "TOR draait niet" @@ -640,7 +1565,7 @@ msgid "TOR is running" msgstr "TOR draait" msgid "Relay" -msgstr "" +msgstr "Relay" msgid "Relay settings" msgstr "Relay-instellingen" @@ -668,7 +1593,7 @@ msgstr "We proberen TOR te stoppen" #: template/dashboard.php msgid "Bridged AP mode is enabled. For Hostname and IP, see your router's admin page." -msgstr "" +msgstr "Brug AP modus is ingeschakeld. Voor hostnaam en IP, zie de beheerderspagina van uw router." #: common form controls msgid "Save settings" @@ -692,45 +1617,1125 @@ msgstr "omhoog" msgid "down" msgstr "omlaag" +msgid "Clear log" +msgstr "Log wissen" + msgid "adblock" -msgstr "" +msgstr "adblock" msgid "Ad Blocking" -msgstr "" +msgstr "Ad Blocking" msgid "Start Ad Blocking" -msgstr "" +msgstr "Start Ad Blocking" msgid "Restart Ad Blocking" -msgstr "" +msgstr "Herstart Ad Blocking" msgid "Blocklist settings" -msgstr "" +msgstr "Blokkeerlijst instellingen" msgid "Enable blocklists" -msgstr "" +msgstr "Blokkeerlijsten inschakelen" msgid "Enable this option if you want RaspAP to block DNS requests for ads, tracking and other virtual garbage. Blocklists are gathered from multiple, actively maintained sources and automatically updated, cleaned, optimized and moderated on a daily basis." -msgstr "" +msgstr "Schakel deze optie in als u wilt dat RaspAP DNS-verzoeken voor advertenties, tracking en andere virtuele garbage blokkeert. Blokklijsten worden verzameld uit meervoudige en actief onderhouden bronnen en worden dagelijks geüpdatet, opgeruimd, geoptimaliseerd en gemodereerd." msgid "This option adds conf-file and addn-hosts to the dnsmasq configuration." -msgstr "" +msgstr "Deze optie voegt conf-file en addn-hosts toe aan de dnsmasq configuratie." msgid "Choose a blocklist provider" -msgstr "" +msgstr "Kies een aanbieder voor blokkeringslijsten" msgid "Hostnames blocklist last updated" -msgstr "" +msgstr "Blokkeerlijst van hostnamen laatst bijgewerkt" msgid "Domains blocklist last updated" -msgstr "" +msgstr "Domeinen blokkeerlijst laatst bijgewerkt" msgid "Update now" -msgstr "" +msgstr "Nu bijwerken" msgid "Statistics" -msgstr "" +msgstr "Statistieken" msgid "Information provided by adblock" msgstr "Informatie verstrekt door adblock" +msgid "Custom blocklist" +msgstr "Custom blokkeerlijst" + +msgid "Enable custom blocklist" +msgstr "Aangepaste blokkeerlijst inschakelen" + +msgid "Define custom hosts to be blocked by entering an IPv4 or IPv6 address followed by any whitespace (spaces or tabs) and the host name." +msgstr "Definieer aangepaste hosts die geblokkeerd moeten worden door het invoeren van een IPv4 of IPv6 adres gevolgd door een spatie of tab, en de hostnaam." + +msgid "IPv4 example: 0.0.0.0 badhost.com" +msgstr "IPv4 voorbeeld: 0.0.0.0 badhost.com" + +msgid "This option adds an addn-hosts directive to the dnsmasq configuration." +msgstr "Deze optie voegt een addn-hosts richtlijn toe aan de dnsmasq configuratie." + +msgid "Custom blocklist not defined" +msgstr "Aangepaste blokkeringslijst niet gedefinieerd" + +msgid "Invalid custom IP address found on line " +msgstr "Ongeldig aangepast IP-adres gevonden in de regel " + +msgid "Invalid custom host found on line " +msgstr "Ongeldige aangepaste host gevonden op regel " + +msgid "Tunnel settings" +msgstr "Tunnelinstellingen" + +msgid "Configuration Method" +msgstr "Configuratiemethode" + +msgid "Upload file" +msgstr "Bestand uploaden" + +msgid "Create manually" +msgstr "Handmatig aanmaken" + +msgid "Upload a WireGuard config" +msgstr "Een WireGuard configuratie uploaden" + +msgid "This option uploads and installs an existing WireGuard .conf file on this device." +msgstr "Deze optie uploadt en installeert een bestaand WireGuard .conf bestand op dit apparaat." + +msgid "Apply iptables rules to the selected interface" +msgstr "iptables-regels toepassen op de geselecteerde interface" + +msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on a desired interface. The active AP interface is the default." +msgstr "Aanbevolen als je netwerkverkeer wil doorsturen van de wg0 interface naar clients die verbonden zijn met een gewenste interface. De actieve AP interface is de standaard." + +msgid "This option adds iptables Postup and PostDown rules for the interface selected below." +msgstr "Deze optie voegt iptables Postup en PostDown regels toe voor de hieronder geselecteerde interface." + +msgid "Select WireGuard configuration file (.conf)" +msgstr "Selecteer het WireGuard-configuratiebestand (.conf)" + +msgid "Create a local WireGuard config" +msgstr "Een lokale WireGuard configuratie aanmaken" + +msgid "Enable server" +msgstr "Server inschakelen" + +msgid "Enable this option to secure network traffic by creating an encrypted tunnel between RaspAP and configured peers." +msgstr "Schakel deze optie in om netwerkverkeer te beveiligen door een versleutelde tunnel aan te maken tussen RaspAP en geconfigureerde peers." + +msgid "This setting generates a new WireGuard .conf file on this device." +msgstr "Deze instelling genereert een nieuw WireGuard .conf bestand op dit apparaat." + +msgid "Local public key" +msgstr "Lokale openbare sleutel" + +msgid "Local Port" +msgstr "Lokale haven" + +msgid "IP Address" +msgstr "IP-adres" + +msgid "DNS" +msgstr "DNS" + +msgid "Peer" +msgstr "Peer" + +msgid "Enable peer" +msgstr "Peer inschakelen" + +msgid "Enable this option to encrypt traffic by creating a tunnel between RaspAP and this peer." +msgstr "Schakel deze optie in om verkeer te versleutelen door een tunnel te creëren tussen RaspAP en deze peer." + +msgid "This option adds client.conf to the WireGuard configuration." +msgstr "Deze optie voegt client.conf toe aan de WireGuard configuratie." + +msgid "Peer public key" +msgstr "Openbare sleutel van peer" + +msgid "Endpoint address" +msgstr "Adres eindpunt" + +msgid "Allowed IPs" +msgstr "Toegestane IP's" + +msgid "Persistent keepalive" +msgstr "Aanhoudende keepalive" + +msgid "Enable this option to display an updated wg-quick debug log." +msgstr "Schakel deze optie in om een bijgewerkt wg-quick debug-logboek weer te geven." + +msgid "WireGuard debug log updated" +msgstr "WireGuard debug-log bijgewerkt" + +msgid "Scan this QR code with your client to connect to this tunnel" +msgstr "Scan deze QR-code met je client om verbinding te maken met deze tunnel" + +msgid "or download the client.conf file to your device." +msgstr "of download het client.conf bestand naar je apparaat." + +msgid "Download" +msgstr "Downloaden" + +msgid "Start WireGuard" +msgstr "WireGuard starten" + +msgid "Stop WireGuard" +msgstr "Stop WireGuard" + +msgid "Information provided by wireguard" +msgstr "Informatie verstrekt door wireguard" + +msgid "Attempting to start WireGuard" +msgstr "Poging om WireGuard te starten" + +msgid "Attempting to stop WireGuard" +msgstr "WireGuard proberen te stoppen" + +msgid "WireGuard configuration updated successfully" +msgstr "WireGuard-configuratie succesvol bijgewerkt" + +msgid "WireGuard configuration failed to be updated" +msgstr "WireGuard-configuratie is niet bijgewerkt" + +msgid "Enable kill switch" +msgstr "Noodstopschakelaar inschakelen" + +msgid "This option adds iptables PostUp and PreDown rules for the configured interface." +msgstr "Deze optie voegt iptables PostUp en PreDown regels toe voor de geconfigureerde interface." + +msgid "Recommended if you wish to prevent the flow of unencrypted packets through non-WireGuard interfaces." +msgstr "Aanbevolen als u de stroom van niet-versleutelde pakketten door niet-WireGuard interfaces wilt voorkomen." + +msgid "iptables rules added to WireGuard configuration" +msgstr "iptables-regels toegevoegd aan WireGuard-configuratie" + +msgid "Existing iptables rules found in WireGuard configuration - not added" +msgstr "Bestaande iptables regels gevonden in WireGuard configuratie - niet toegevoegd" + +msgid "Currently available WireGuard file configurations are displayed below." +msgstr "De momenteel beschikbare WireGuard-bestandsconfiguraties worden hieronder weergegeven." + +msgid "Activating a configuration will restart the wg-quick service." +msgstr "Het activeren van een configuratie herstart de wg-quick service." + +msgid "Client Firewall" +msgstr "Firewall voor de klant" + +msgid "Firewall is ENABLED" +msgstr "Firewall is ingeschakeld" + +msgid "Firewall is OFF" +msgstr "Firewall is UIT" + +msgid "The default firewall will only allow outgoing and already established traffic." +msgstr "De standaard firewall staat alleen uitgaand en reeds tot stand gebracht verkeer toe." + +msgid "No incoming UDP traffic is allowed." +msgstr "Inkomend UDP-verkeer is niet toegestaan." + +msgid "There are no restrictions for the access point %s." +msgstr "Er zijn geen beperkingen voor het toegangspunt %s." + +msgid "Exception: Service" +msgstr "Uitzondering: Service" + +msgid "allow SSH access on port 22" +msgstr "SSH-toegang toestaan op poort 22" + +msgid "allow access to the RaspAP GUI on port 80 or 443" +msgstr "toegang verlenen tot de RaspAP GUI op poort 80 of 443" + +msgid "Allow incoming connections for some services from the internet side." +msgstr "Sta inkomende verbindingen toe voor sommige services vanaf de internetzijde." + +msgid "Exception: network device" +msgstr "Uitzondering: netwerkapparaat" + +msgid "Exclude device(s)" +msgstr "Apparaat uitsluiten" + +msgid "Exclude the given network device(s) (separated by a blank or comma) from firewall rules." +msgstr "Sluit het (de) opgegeven netwerkapparaat (-apparaten) (gescheiden door een spatie of komma) uit van de firewallregels." + +msgid "Current client devices: %s" +msgstr "Huidige clientapparaten: %s" + +msgid "The access point %s is per default excluded." +msgstr "Het toegangspunt %s is standaard uitgesloten." + +msgid "Exception: IP-Address" +msgstr "Uitzondering: IP-Adres" + +msgid "Allow incoming connections from" +msgstr "Sta inkomende verbindingen toe van" + +msgid "For the given IP-addresses (separated by a blank or comma) the incoming connection (via TCP and UDP) is accepted." +msgstr "Voor de opgegeven IP-adressen (gescheiden door een spatie of komma) wordt de inkomende verbinding (via TCP en UDP) geaccepteerd." + +msgid "This is required for an OpenVPN via UDP or Wireguard connection." +msgstr "Dit is vereist voor een OpenVPN via UDP of Wireguard verbinding." + +msgid "The list of configured VPN server IP addresses: %s" +msgstr "De lijst met geconfigureerde IP-adressen van VPN-servers: %s" + +msgid "Disable Firewall" +msgstr "Firewall uitschakelen" + +msgid "Enable Firewall" +msgstr "Firewall inschakelen" + +msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." +msgstr "Het wijzigen van de firewallstatus kan inkomend verkeer verstoren of toestaan. Kies Proceed om verder te gaan." + +msgid "Proceed" +msgstr "Ga verder" + +msgid "Apply changes" +msgstr "Wijzigingen toepassen" + +msgid "Dynamic DNS" +msgstr "Dynamisch DNS" + +msgid "Service provider" +msgstr "Dienstverlener" + +msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." +msgstr "Selecteer een Dynamische DNS-service die wordt ondersteund door ddclient uit de onderstaande lijst. Als je een bekende serviceprovider selecteert, worden de velden voor protocol en server ingevuld. Je kunt de dienst ook handmatig configureren." + +msgid "Method to obtain IP" +msgstr "Methode om IP te verkrijgen" + +msgid "Select the method used by ddclient to obtain an IP address. This value is specified in the -use option." +msgstr "Selecteer de methode die ddclient gebruikt om een IP-adres te verkrijgen. Deze waarde wordt opgegeven in de optie -use." + +msgid "Discovery page on the web" +msgstr "Ontdekkingspagina op het web" + +msgid "Network interface" +msgstr "Netwerkinterface" + +msgid "Network address" +msgstr "Netwerkadres" + +msgid "Firewall status page" +msgstr "Statuspagina firewall" + +msgid "External command" +msgstr "Extern commando" + +msgid "Web address" +msgstr "Webadres" + +msgid "Firewall" +msgstr "Firewall" + +msgid "Command" +msgstr "Opdracht" + +msgid "Example: 192.168.1.254/status.htm." +msgstr "Example: 192.168.1.254/status.htm." + +msgid "Example: /usr/local/bin/get-ip." +msgstr "Voorbeeld: /usr/local/bin/get-ip." + +msgid "Domain" +msgstr "Domein" + +msgid "Enable SSL" +msgstr "SSL inschakelen" + +msgid "Use an encrypted SSL connection for updates. Not supported by all providers." +msgstr "Gebruik een gecodeerde SSL-verbinding voor updates. Niet ondersteund door alle providers." + +msgid "Value specified in milliseconds (ms). Default is 300." +msgstr "Waarde opgegeven in milliseconden (ms). De standaardwaarde is 300." + +msgid "Use the Generate log button to output detailed ddclient daemon debug info" +msgstr "Gebruik de knop Generate log om gedetailleerde ddclient daemon debug-informatie uit te voeren" + +msgid "Generate log" +msgstr "Logboek genereren" + +msgid "Information provided by ddclient" +msgstr "Informatie geleverd door ddclient" + +msgid "Start Dynamic DNS" +msgstr "Dynamische DNS starten" + +msgid "Stop Dynamic DNS" +msgstr "Dynamische DNS stoppen" + +msgid "Restart Dynamic DNS" +msgstr "Dynamisch DNS herstarten" + +msgid "Account details" +msgstr "Accountgegevens" + +msgid "My account" +msgstr "Mijn account" + +msgid "Server location" +msgstr "Serverlocatie" + +msgid "Choosing Save settings will connect to the selected country." +msgstr "Als u Instellingen opslaan kiest, wordt er verbinding gemaakt met het geselecteerde land." + +msgid "Choosing Connect %s will connect to a recommended server." +msgstr "Als je Connect %s kiest, maak je verbinding met een aanbevolen server." + +msgid "Select a country from the server location list" +msgstr "Selecteer een land in de lijst met serverlocaties" + +msgid "Select a country..." +msgstr "Selecteer een land..." + +msgid "Account information not available from %s's Linux CLI." +msgstr "Accountinformatie niet beschikbaar via %s's Linux CLI." + +msgid "Attempting to connect to %s" +msgstr "Ik probeer verbinding te maken met %s" + +msgid "Attempting to connect VPN provider" +msgstr "Poging tot verbinding met VPN-provider" + +msgid "Attempting to disconnect VPN provider" +msgstr "Verbinding met VPN-provider verbroken" + +msgid "Expected %s binary not found at: %s" +msgstr "Verwacht %s binair niet gevonden op: %s" + +msgid "Visit the installation instructions for %s's Linux CLI." +msgstr "Ga naar de installatie-instructies voor %s's Linux CLI." + +msgid "Unable to execute %s binary found at: %s" +msgstr "Kan %s binary gevonden op niet uitvoeren: %s" + +msgid "Check that binary is executable and permissions exist in raspap.sudoers" +msgstr "Controleer of het binaire bestand uitvoerbaar is en of er rechten bestaan in raspap.sudoers" + +msgid "Installed Linux CLI: %s" +msgstr "Linux CLI geïnstalleerd: %s" + +msgid "Current %s connection status is displayed below." +msgstr "De huidige %s verbindingsstatus wordt hieronder weergegeven." + +msgid "Information provided by %s" +msgstr "Informatie verstrekt door %s" + +msgid "Connect %s" +msgstr "Maak verbinding met %s" + +msgid "Disconnect %s" +msgstr "Ontkoppelen %s" + +msgid "About" +msgstr "Over" + +msgid "Insiders" +msgstr "Insiders" + +msgid "Contributing" +msgstr "Bijdragen" + +msgid "Check for update" +msgstr "Controleren op update" + +msgid "New release check in progress..." +msgstr "Nieuwe releasecontrole aan de gang..." + +msgid "A new release is available: Version" +msgstr "Er is een nieuwe versie beschikbaar: Versie" + +msgid "Installed version is the latest release." +msgstr "De geïnstalleerde versie is de nieuwste release." + +msgid "GitHub authentication" +msgstr "GitHub verificatie" + +msgid "Updating Insiders requires GitHub authentication." +msgstr "Insiders updaten vereist GitHub authenticatie." + +msgid "Your credentials will be sent to GitHub securely with SSL. However, use caution if your RaspAP install is on a WLAN shared by untrusted users." +msgstr "Je gegevens worden veilig met SSL naar GitHub gestuurd. Wees echter voorzichtig als je RaspAP installatie op een WLAN staat dat gedeeld wordt door niet-vertrouwde gebruikers." + +msgid "Personal Access Token" +msgstr "Persoonlijk toegangssymbool" + +msgid "Please provide a valid token." +msgstr "Geef een geldig token op." + +msgid "Perform update" +msgstr "Update uitvoeren" + +msgid "Update in progress" +msgstr "Update wordt uitgevoerd" + +msgid "Application is being updated..." +msgstr "Aanvraag wordt bijgewerkt..." + +msgid "Configuring update" +msgstr "Update configureren" + +msgid "Updating sources" +msgstr "Bronnen bijwerken" + +msgid "Installing package updates" +msgstr "Pakketupdates installeren" + +msgid "Downloading latest files" +msgstr "De nieuwste bestanden downloaden" + +msgid "Installing application" +msgstr "Toepassing installeren" + +msgid "Update complete" +msgstr "Update voltooid" + +msgid "An error occurred. Check the log at /tmp/raspap_install.log" +msgstr "Er is een fout opgetreden. Controleer de log in /tmp/raspap_install.log" + +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP is een co-creatie van %1$s en %2$s met de bijdragen van onze %3$s en %4$s. Lees meer over deelname aan het project als %5$s, %6$s of %7$s met onmiddellijke toegang tot %8$s beschikbaar voor %9$s." + +msgid "developer community" +msgstr "ontwikkelaarsgemeenschap" + +msgid "language translators" +msgstr "taalvertalers" + +msgid "code contributor" +msgstr "code medewerker" + +msgid "translator" +msgstr "vertaler" + +msgid "financial sponsor" +msgstr "financiële sponsor" + +msgid "exclusive features" +msgstr "exclusieve functies" + +msgid "RaspAP Exception" +msgstr "RaspAP Uitzondering" + +msgid "An exception occurred" +msgstr "Er heeft zich een uitzondering voorgedaan" + +msgid "RestAPI" +msgstr "RestAPI" + +msgid "RestAPI settings" +msgstr "RestAPI-instellingen" + +msgid "Start RestAPI service" +msgstr "RestAPI-service starten" + +msgid "Stop RestAPI service" +msgstr "RestAPI-service stoppen" + +msgid "API Key" +msgstr "API-sleutel" + +msgid "Saving API key" +msgstr "API-sleutel opslaan" + +msgid "RestAPI status" +msgstr "RestAPI status" + +msgid "Current restapi.service status is displayed below." +msgstr "De huidige status van restapi.service wordt hieronder weergegeven." + +msgid "RestAPI docs are accessible here%s" +msgstr "RestAPI-documenten zijn hier toegankelijk %s" + +msgid "Restarting restapi.service" +msgstr "Restapi.service herstarten" + +msgid "Information provided by restapi.service" +msgstr "Informatie geleverd door restapi.service" + +msgid "Session Expired" +msgstr "Sessie Verlopen" + +msgid "Your session has expired. Please login to continue." +msgstr "Uw sessie is verlopen. Log in om door te gaan." + +msgid "Login" +msgstr "Inloggen" + +msgid "Administrator login" +msgstr "Inloggen als beheerder" + +msgid "Forgot password" +msgstr "Wachtwoord vergeten" + +msgid "Login failed" +msgstr "Inloggen mislukt" + +msgid "NTP Server" +msgstr "NTP-server" + +msgid "NTP Server settings" +msgstr "Instellingen NTP-server" + +msgid "NTP daemon" +msgstr "NTP-daemon" + +msgid "Synchronized time" +msgstr "Gesynchroniseerde tijd" + +msgid "NTP servers" +msgstr "NTP-servers" + +msgid "Add an NTP server" +msgstr "Een NTP-server toevoegen" + +msgid "Start NTP service" +msgstr "NTP-service starten" + +msgid "Stop NTP service" +msgstr "NTP-service stoppen" + +msgid "Edit mode" +msgstr "Bewerkingsmodus" + +msgid "Use the Edit mode toggle to manually edit the current ntp.config configuration." +msgstr "Gebruik de bewerkingsmodus om handmatig de huidige ntp.config configuratie te bewerken." + +msgid "Specify a public NTP server or a private one on your local network. IPv4 and IPv6 address, or a fully qualified domain name (FQDN) are acceptable values." +msgstr "Geef een openbare NTP-server op of een privé server op je lokale netwerk. IPv4 en IPv6 adressen of een volledig gekwalificeerde domeinnaam (FQDN) zijn aanvaardbare waarden." + +msgid "Public NTP servers supporting Network Time Security (NTS) may be specified with the nts suffix." +msgstr "Openbare NTP servers die Network Time Security (NTS) ondersteunen kunnen gespecificeerd worden met het nts achtervoegsel." + +msgid "Examples of valid server entries include %s, %s and %s." +msgstr "Voorbeelden van geldige serververmeldingen zijn %s, %s en %s." + +msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." +msgstr "De huidige ntpq peer status wordt hieronder weergegeven. Een sterretje(*) geeft de voorkeursserver aan." + +msgid "NTP configuration cannot be empty" +msgstr "NTP-configuratie kan niet leeg zijn" + +msgid "Restarting ntpd.service" +msgstr "ntpd.service opnieuw starten" + +msgid "Please enter a valid NTP server" +msgstr "Voer een geldige NTP-server in" + +msgid "Attempting to start ntp.service" +msgstr "Poging om ntp.service te starten" + +msgid "Attempting to stop ntp.service" +msgstr "Poging om ntp.service te stoppen" + +msgid "NTP configuration not found at %s" +msgstr "NTP-configuratie niet gevonden op %s" + +msgid "NTP configuration updated" +msgstr "NTP-configuratie bijgewerkt" + +msgid "Advertising device as a Tailscale exit node" +msgstr "Apparaat adverteren als Tailscale uitgangsknooppunt" + +msgid "Attempting to optimize UDP throughput" +msgstr "UDP-doorvoer proberen te optimaliseren" + +msgid "Kernel transport layer offloads enabled for UDP" +msgstr "Kernel transportlaag offloads ingeschakeld voor UDP" + +msgid "Failed to enable kernel transport layer offloads for UDP" +msgstr "Mislukt om kernel transportlaag offloads voor UDP in te schakelen" + +msgid "Attempting to set tailscale up" +msgstr "Ik probeer tailscale in te stellen" + +msgid "Attempting to set tailscale down" +msgstr "Poging om tailscale omlaag te zetten" + +msgid "Attempting to disconnect from tailscale" +msgstr "De verbinding met tailscale wordt verbroken" + +msgid "Disconnected from tailscale and expired node key" +msgstr "Verbinding met tailscale verbroken en knooppuntsleutel verlopen" + +msgid "Unable to disconnect from tailscale" +msgstr "Kan de verbinding met tailscale niet verbreken" + +msgid "Expected tailscale binary not found at: %" +msgstr "Verwachte tailscale binair niet gevonden op: %" + +msgid "A Tailscale VPN exit node extension for RaspAP" +msgstr "Een Tailscale VPN-exitknooppuntuitbreiding voor RaspAP" + +msgid "Unable to retrieve Tailscale login. Choose %s to continue." +msgstr "Kan de Tailscale login niet ophalen. Kies %s om door te gaan." + +msgid "Start Tailscale" +msgstr "Start Tailscale" + +msgid "Stop Tailscale" +msgstr "Staartschaal stoppen" + +msgid "Next" +msgstr "Volgende" + +msgid "Device approved and activated as a Tailscale exit node" +msgstr "Apparaat goedgekeurd en geactiveerd als Tailscale uitgangsknooppunt" + +msgid "Not connected: Login required." +msgstr "Geen verbinding: Inloggen vereist." + +msgid "Tailscale VPN" +msgstr "Tailscale VPN" + +msgid "Exit node activated" +msgstr "Knooppunt verlaten geactiveerd" + +msgid "The device %s is connected with the address %s and offers an exit node." +msgstr "Het apparaat %s is verbonden met het adres %s en biedt een uitgangsknooppunt." + +msgid "See the %s on how to use this exit node with your devices." +msgstr "Zie %s voor meer informatie over het gebruik van deze uitgangsknoop met je apparaten." + +msgid "Allow exit node" +msgstr "Knooppunt verlaten toestaan" + +msgid "The device %s is pending approval as an exit node." +msgstr "Het apparaat %s is in afwachting van goedkeuring als uitgangsknooppunt." + +msgid "Locate the %s Exit Node badge in the machines list." +msgstr "Zoek de %s Exit Node badge in de machinelijst." + +msgid "Open Tailscale Machines" +msgstr "Open Tailscale Machines" + +msgid "To allow this device as an exit node, choose Open Tailscale Machines." +msgstr "Kies Open Tailscale Machines om dit apparaat toe te staan als uitgangsknooppunt." + +msgid "From the %s icon menu of the exit node, open the %s panel." +msgstr "Open het paneel %s in het pictogrammenu %s van het knooppunt Afsluiten." + +msgid "Edit route settings" +msgstr "Route-instellingen bewerken" + +msgid "Login to Tailscale" +msgstr "Inloggen op Tailscale" + +msgid "To connect device %s to your tailnet, choose %s." +msgstr "Om apparaat %s aan te sluiten op uw achterklep, kiest u %s." + +msgid "After logging in, choose Next to continue." +msgstr "Kies na het inloggen Volgende om verder te gaan." + +msgid "Configure exit node" +msgstr "Uitgangsknooppunt configureren" + +msgid "The device %s is connected to your tailnet with the address %s." +msgstr "Het apparaat %s is verbonden met uw tailnet met het adres %s." + +msgid "By default, Tailscale only routes traffic between the devices on which it's been installed. You can also route all your public internet traffic by configuring a device on your network as a exit node" +msgstr "Standaard routeert Tailscale alleen verkeer tussen de apparaten waarop het is geïnstalleerd. Je kunt ook al je openbare internetverkeer routeren door een apparaat op je netwerk te configureren als een exit node" + +msgid "When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN." +msgstr "Wanneer je al het verkeer door een exit knooppunt routeert, gebruik je effectief standaard routes (0.0.0.0/0, ::/0), vergelijkbaar met hoe je zou doen als je een typisch VPN zou gebruiken." + +msgid "You have the option of configuring this device as an exit node, or using another exit node in your tailnet." +msgstr "U kunt dit apparaat configureren als een uitgangsknooppunt of een ander uitgangsknooppunt in uw staartnet gebruiken." + +msgid "Select an existing exit node on your tailnet" +msgstr "Selecteer een bestaand uitgangsknooppunt op uw tailnet" + +msgid "This is a typical configuration if you're using this device as a VPN travel router, for example." +msgstr "Dit is een typische configuratie als je dit apparaat bijvoorbeeld gebruikt als een VPN-router voor op reis." + +msgid "Configure this device as a new exit node" +msgstr "Dit apparaat configureren als een nieuw uitgangsknooppunt" + +msgid "By configuring this device as an exit node, public internet traffic from devices connected in your tailnet will be routed through it." +msgstr "Door dit apparaat te configureren als een uitgangsknooppunt, wordt het openbare internetverkeer van apparaten die zijn aangesloten op je tailnet er doorheen geleid." + +msgid "For security reasons, you must opt in to enable exit node functionality. The first step is to advertise %s as an exit node in your tailnet. In the next step, you'll allow this device to be an exit node." +msgstr "Om veiligheidsredenen moet u zich aanmelden om de functionaliteit van exit node in te schakelen. De eerste stap is het adverteren %s als een exit knooppunt in je tailnet. In de volgende stap geef je dit apparaat toestemming om een exit node te zijn." + +msgid "Advertise %s as an exit node" +msgstr "Adverteren %s als een exit-knooppunt" + +msgid "This effectively configures Tailscale as a VPN to mask your real location, access region-restricted content, or enhance privacy when connecting from untrusted networks." +msgstr "Dit configureert Tailscale effectief als een VPN om je echte locatie te maskeren, toegang te krijgen tot inhoud met regiobeperkingen of je privacy te verbeteren wanneer je verbinding maakt vanaf niet-vertrouwde netwerken." + +msgid "This option lets Tailscale know your device is ready to route traffic." +msgstr "Deze optie laat Tailscale weten dat je apparaat klaar is om verkeer te routeren." + +msgid "Recommended for Tailscale exit nodes with Linux 6.2 or later kernels, this uses UDP generic receive offload (GRO) forwarding to reduce CPU overhead." +msgstr "Aanbevolen voor Tailscale exit nodes met Linux 6.2 of latere kernels, dit gebruikt UDP generic receive offload (GRO) doorsturen om CPU overhead te verminderen." + +msgid "This option enables transport layer offloads for better performance." +msgstr "Deze optie schakelt transportlaag offloads in voor betere prestaties." + +msgid "Select an exit node" +msgstr "Selecteer een uitgangsknooppunt" + +msgid "To use %s as a VPN gateway, configure Tailscale to use an exit node. Tailscale's suggested node is indicated with a star." +msgstr "Om %s als VPN-gateway te gebruiken, moet Tailscale geconfigureerd worden om een uitgangsknooppunt te gebruiken. Het voorgestelde knooppunt van Tailscale wordt aangegeven met een ster." + +msgid "Advertise a subnet route for the active %s AP interface" +msgstr "Adverteer een subnet route voor de actieve %s AP-interface" + +msgid "Subnet routes let you extend your Tailscale network (known as a tailnet) to include devices that don't or can't run the Tailscale client." +msgstr "Met subnetroutes kunt u uw Tailscale netwerk (bekend als een tailnet) uitbreiden met apparaten waarop de Tailscale client niet draait of kan draaien." + +msgid "A subnet route acts as a gateway between your tailnet and a physical subnet. The subnet of the active AP interface is preconfigured below; edit if necessary." +msgstr "Een subnet route werkt als een gateway tussen je tailnet en een fysiek subnet. Het subnet van de actieve AP-interface is hieronder vooraf geconfigureerd; wijzig dit indien nodig." + +msgid "Route LAN traffic through the exit node." +msgstr "Leid LAN-verkeer door het exit knooppunt." + +msgid "This will direct all LAN traffic to go through your exit node only." +msgstr "Dit zorgt ervoor dat al het LAN verkeer alleen via je exit node gaat." + +msgid "Choose Next to configure %s to use the selected exit node with these options." +msgstr "Kies Volgende om %s om het geselecteerde uitgangsknooppunt met deze opties te gebruiken." + +msgid "No exit nodes found on your tailnet. Choose Back to continue." +msgstr "Geen uitgangsknooppunten gevonden op uw staartnet. Kies Terug om verder te gaan." + +msgid "Using exit node" +msgstr "Uitgangsknooppunt gebruiken" + +msgid "The device %s is configured to use exit node %s. It has the Tailscale MagicDNS address %s." +msgstr "Het apparaat %s is geconfigureerd om uitgangsknooppunt %s. Het heeft het Tailscale MagicDNS-adres %s." + +msgid "Choose Save settings to continue." +msgstr "Kies Instellingen opslaan om verder te gaan." + +msgid "Choose Next to continue." +msgstr "Kies Volgende om verder te gaan." + +msgid "Tailnet status" +msgstr "Status achterklep" + +msgid "Current tailnet status is displayed below." +msgstr "De huidige status van het achterklepje wordt hieronder weergegeven." + +msgid "Use Tailscale DNS settings (default)." +msgstr "Gebruik de Tailscale DNS-instellingen (standaard)." + +msgid "Uncheck to use local DNS. This sets --accept-dns=false." +msgstr "Vink uit om lokale DNS te gebruiken. Dit stelt --accept-dns=false in." + +msgid "Do not use Tailscale subnets (default on Linux)." +msgstr "Gebruik geen Tailscale subnetten (standaard op Linux)." + +msgid "If subnet routes exist for your tailnet, you can route your device's traffic to a subnet router. Enabling this sets --accept-routes=true." +msgstr "Als er subnetroutes bestaan voor je tailnet, kun je het verkeer van je apparaat naar een subnetrouter routeren. Als je dit inschakelt, wordt --accept-routes=true ingesteld." + +msgid "If keys expire for a device, connections to/from the given endpoint will stop working." +msgstr "Als sleutels voor een apparaat verlopen, zullen verbindingen van/naar het opgegeven eindpunt niet meer werken." + +msgid "This option uses --force-reauth to renew the keys for this device." +msgstr "Deze optie gebruikt --force-reauth om de sleutels voor dit apparaat te vernieuwen." + +msgid "Start capture" +msgstr "Begin met vastleggen" + +msgid "Stop capture" +msgstr "Stop het vastleggen" + +msgid "Capture files" +msgstr "Bestanden vastleggen" + +msgid "Capture interface" +msgstr "Interface vastleggen" + +msgid "Output file" +msgstr "Uitvoerbestand" + +msgid "Path where capture file will be saved (.pcap format)" +msgstr "Pad waar capturebestand wordt opgeslagen (.pcap-indeling)" + +msgid "File will be saved with .pcap extension" +msgstr "Bestand wordt opgeslagen met de extensie .pcap" + +msgid "Capture filter (BPF syntax)" +msgstr "Opvangfilter (BPF-syntaxis)" + +msgid "Berkeley Packet Filter syntax. Leave empty to capture all traffic." +msgstr "Berkeley Pakketfilter syntaxis. Laat leeg om al het verkeer vast te leggen." + +msgid "Examples: port 80, host 192.168.1.1, tcp and not port 22" +msgstr "Voorbeelden: poort 80, host 192.168.1.1, tcp en niet poort 22" + +msgid "Capture limits" +msgstr "Grenzen vastleggen" + +msgid "Packet count limit" +msgstr "Limiet aantal pakketten" + +msgid "Stop capture after this many packets. Leave empty for unlimited." +msgstr "Stop het vastleggen na dit aantal pakketten. Laat leeg voor onbeperkt." + +msgid "Duration limit (seconds)" +msgstr "Duurlimiet (seconden)" + +msgid "Stop capture after this many seconds. Leave empty for unlimited." +msgstr "Stop de opname na dit aantal seconden. Laat leeg voor onbeperkt." + +msgid "Ring buffer settings" +msgstr "Instellingen ringbuffer" + +msgid "File size (KB)" +msgstr "Bestandsgrootte (KB)" + +msgid "Create new file when this size is reached. Leave empty to disable." +msgstr "Maak een nieuw bestand wanneer deze grootte is bereikt. Leeg laten om uit te schakelen." + +msgid "10000 = 10 MB per file" +msgstr "10000 = 10 MB per bestand" + +msgid "Number of files" +msgstr "Aantal bestanden" + +msgid "Maximum number of ring buffer files to keep. Oldest files are deleted." +msgstr "Maximum aantal te bewaren ringbufferbestanden. Oudste bestanden worden verwijderd." + +msgid "Advanced options" +msgstr "Geavanceerde opties" + +msgid "Snapshot length (bytes)" +msgstr "Snapshotlengte (bytes)" + +msgid "Limit the amount of data captured per packet. Leave empty for full packets." +msgstr "Beperk de hoeveelheid gegevens die per pakket worden vastgelegd. Laat leeg voor volle pakketten." + +msgid "96 bytes captures headers only, reduces file size" +msgstr "96 bytes vangt alleen headers op, verkleint bestand" + +msgid "Promiscuous mode" +msgstr "Promiscue modus" + +msgid "Capture all packets on the network segment, not just those destined for this interface" +msgstr "Vang alle pakketten op het netwerksegment, niet alleen die bestemd zijn voor deze interface" + +msgid "Quick filter presets" +msgstr "Snelle filtervoorinstellingen" + +msgid "Capture files generated by tshark are displayed below." +msgstr "Capturebestanden gegenereerd door tshark worden hieronder weergegeven." + +msgid "No capture files found in /tmp directory" +msgstr "Geen vastleggingsbestanden gevonden in de map /tmp" + +msgid "Filename" +msgstr "Bestandsnaam" + +msgid "Size" +msgstr "Maat" + +msgid "Modified" +msgstr "Gewijzigd" + +msgid "Actions" +msgstr "Acties" + +msgid "Download file" +msgstr "Bestand downloaden" + +msgid "Delete file" +msgstr "Bestand verwijderen" + +msgid "Confirm deletion" +msgstr "Verwijdering bevestigen" + +msgid "Are you sure you want to delete this file?" +msgstr "Weet je zeker dat je dit bestand wilt verwijderen?" + +msgid "All Traffic" +msgstr "Alle verkeer" + +msgid "HTTP/HTTPS" +msgstr "HTTP/HTTPS" + +msgid "ICMP (Ping)" +msgstr "ICMP (Ping)" + +msgid "SSH" +msgstr "SSH" + +msgid "Exclude SSH" +msgstr "SSH uitsluiten" + +msgid "A Wireshark (TShark) CLI packet capture for RaspAP" +msgstr "Een Wireshark (TShark) CLI pakketopname voor RaspAP" + +msgid "Information provided by tshark" +msgstr "Informatie verstrekt door tshark" + +msgid "Total: %d file(s), %s" +msgstr "Totaal: %d bestand(en), %s" + +msgid "Captive portal" +msgstr "Captive portaal" + +msgid "Gateway interface" +msgstr "Gateway-interface" + +msgid "Gateway name" +msgstr "Naam gateway" + +msgid "Gateway address" +msgstr "Adres gateway" + +msgid "Gateway port" +msgstr "Poort" + +msgid "Defaults to the active AP interface, typically wlan0" +msgstr "Wordt standaard ingesteld op de actieve AP-interface, meestal wlan0" + +msgid "Auto-detected from gateway interface if not specified" +msgstr "Automatisch gedetecteerd vanaf gateway-interface indien niet gespecificeerd" + +msgid "Start portal" +msgstr "Start portaal" + +msgid "Stop portal" +msgstr "Stop portaal" + +msgid "Information provided by nodogsplash" +msgstr "Informatie verstrekt door nodogsplash" + +msgid "Stop portal service" +msgstr "Portaalservice stoppen" + +msgid "Start portal service" +msgstr "Portaalservice starten" + +msgid "Changing the portal service will momentarily disrupt client traffic. Choose Proceed to continue." +msgstr "Het wijzigen van de portaalservice zal het clientverkeer tijdelijk verstoren. Kies Proceed om door te gaan." + +msgid "Interface to be managed by the portal" +msgstr "Interface die door de portal moet worden beheerd" + +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "Naam van je gateway (beschikbaar als$gatewayname variabele)" + +msgid "IP address of the router. Leave empty for auto-detection" +msgstr "IP-adres van de router. Leeg laten voor automatische detectie" + +msgid "Port for Nodogsplash HTTP server" +msgstr "Poort voor Nodogsplash HTTP-server" + +msgid "Maximum clients" +msgstr "Maximale klanten" + +msgid "Session timeout (minutes)" +msgstr "Time-out sessie (minuten)" + +msgid "Pre-auth idle timeout (minutes)" +msgstr "Pre-auth idle timeout (minuten)" + +msgid "Does not include users on the trusted MAC list" +msgstr "Bevat geen gebruikers op de vertrouwde MAC-lijst" + +msgid "Auth idle timeout (minutes)" +msgstr "Auth idle timeout (minuten)" + +msgid "Check interval (seconds)" +msgstr "Controle-interval (seconden)" + +msgid "MAC address control" +msgstr "MAC-adrescontrole" + +msgid "MAC mechanism" +msgstr "MAC-mechanisme" + +msgid "Blocked MAC list" +msgstr "Geblokkeerde MAC-lijst" + +msgid "Trusted MAC list" +msgstr "Vertrouwde MAC-lijst" + +msgid "These devices are not subject to authentication or firewall rules" +msgstr "Deze apparaten zijn niet onderworpen aan verificatie- of firewallregels" + +msgid "Maximum number of concurrent authenticated users" +msgstr "Maximum aantal gelijktijdige geauthenticeerde gebruikers" + +msgid "Default session length in minutes. 0 = unlimited" +msgstr "Standaard sessielengte in minuten. 0 = onbeperkt" + +msgid "Time before unauthenticated idle users are removed" +msgstr "Tijd voordat niet-geauthenticeerde inactieve gebruikers worden verwijderd" + +msgid "Time before authenticated idle users are deauthenticated" +msgstr "Tijd voordat geauthenticeerde inactieve gebruikers worden gedeauthenticeerd" + +msgid "How often to check client timeouts" +msgstr "Hoe vaak time-outs van clients controleren" + +msgid "Block: blocklisted MACs are blocked. Allow: only allowlisted MACs are allowed" +msgstr "Blokkeren: MAC's op de geblokkeerde lijst worden geblokkeerd. Toestaan: alleen MAC's op de toegestane lijst zijn toegestaan." + +msgid "Example: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" +msgstr "Voorbeeld: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" + +msgid "Comma-separated MAC addresses that bypass authentication entirely" +msgstr "Komma-gescheiden MAC-adressen die de verificatie volledig omzeilen" + +msgid "Block (blocklist mode)" +msgstr "Blokkeren (bloklijstmodus)" + +msgid "Allow (allowlist mode)" +msgstr "Toestaan (modus toestaanlijst)" + +msgid "Gateway IP range" +msgstr "Gateway IP-bereik" + +msgid "Default: 0.0.0.0/0 (all addresses)" +msgstr "Standaard: 0.0.0.0/0 (alle adressen)" + +msgid "Debug level" +msgstr "Debug-niveau" + +msgid "Firewall settings" +msgstr "Instellingen firewall" + +msgid "Allow all traffic for authenticated users" +msgstr "Sta alle verkeer toe voor geverifieerde gebruikers" + +msgid "Allow DNS for pre-authenticated users" +msgstr "DNS toestaan voor vooraf geauthenticeerde gebruikers" + +msgid "IP range to manage in CIDR notation. Leave empty for all addresses" +msgstr "IP-bereik om te beheren in CIDR-notatie. Leeg laten voor alle adressen" + +msgid "Amount of logging detail reported by the nodogsplash.service" +msgstr "Hoeveelheid logboekgegevens gerapporteerd door de nodogsplash.service" + +msgid "0 - Errors only" +msgstr "0 - Alleen fouten" + +msgid "1 - Errors, warnings, infos" +msgstr "1 - Fouten, waarschuwingen, info" + +msgid "2 - Errors, warnings, infos, verbose" +msgstr "2 - Fouten, waarschuwingen, info, uitgebreid" + +msgid "3 - Errors, warnings, infos, verbose, debug" +msgstr "3 - Fouten, waarschuwingen, info, uitgebreid, debug" + +msgid "When enabled, authenticated users have unrestricted access" +msgstr "Indien ingeschakeld, hebben geverifieerde gebruikers onbeperkte toegang" + +msgid "Required for clients to resolve domain names before authentication" +msgstr "Vereist voor clients om domeinnamen op te lossen voor authenticatie" + +msgid "Portal status" +msgstr "Status portaal" + +msgid "Current nodogsplash status is displayed below." +msgstr "De huidige status van nodogsplash wordt hieronder weergegeven." + diff --git a/locale/pt_BR/LC_MESSAGES/messages.mo b/locale/pt_BR/LC_MESSAGES/messages.mo index cfef9c93..3b6b1cd5 100644 Binary files a/locale/pt_BR/LC_MESSAGES/messages.mo and b/locale/pt_BR/LC_MESSAGES/messages.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/messages.po b/locale/pt_BR/LC_MESSAGES/messages.po index e935162c..daa4597c 100644 --- a/locale/pt_BR/LC_MESSAGES/messages.po +++ b/locale/pt_BR/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2023-09-17 15:33\n" +"PO-Revision-Date: 2025-11-09 09:06\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -24,8 +24,8 @@ msgstr "Portal de Configuração de WiFi RaspAP" msgid "Toggle navigation" msgstr "Alternar navegação" -msgid "RaspAP Wifi Portal" -msgstr "Portal WiFi RaspAP" +msgid "RaspAP Admin Panel" +msgstr "Painel de administração do RaspAP" msgid "Dashboard" msgstr "Painel" @@ -33,14 +33,20 @@ msgstr "Painel" msgid "WiFi client" msgstr "Cliente WiFi" +msgid "Status" +msgstr "Status" + msgid "Hotspot" -msgstr "Ponto de acesso" +msgstr "Hotspot" -msgid "Memory Use" -msgstr "Uso da memória" +msgid "Logging" +msgstr "Registro em log" -msgid "CPU Temp" -msgstr "Temp CPU" +msgid "Mem Use" +msgstr "Uso de mem" + +msgid "CPU" +msgstr "CPU" msgid "Networking" msgstr "Rede" @@ -57,9 +63,6 @@ msgstr "Proxy TOR" msgid "Authentication" msgstr "Autenticação" -msgid "Change Theme" -msgstr "Alterar Tema" - msgid "System" msgstr "Sistema" @@ -97,6 +100,69 @@ msgstr "Nova senha" msgid "Repeat new password" msgstr "Repita a nova senha" +msgid "Please provide a valid username." +msgstr "Forneça um nome de usuário válido." + +msgid "Please provide a valid password." +msgstr "Forneça uma senha válida." + +msgid "Please enter your old password." +msgstr "Digite sua senha antiga." + +msgid "Please enter a new password." +msgstr "Digite uma nova senha." + +msgid "Please re-enter your new password." +msgstr "Digite novamente sua nova senha." + +msgid "Avatar" +msgstr "Avatar" + +msgid "Click or tap to upload a new user avatar." +msgstr "Clique ou toque para carregar um novo avatar de usuário." + +msgid "Image files of type JPG, GIF or PNG are accepted. Max file size: 2 MB." +msgstr "São aceitos arquivos de imagem do tipo JPG, GIF ou PNG. Tamanho máximo do arquivo: 2 MB." + +msgid "Reset avatar" +msgstr "Redefinir avatar" + +msgid "Enable limited privilege user" +msgstr "Habilitar usuário com privilégios limitados" + +msgid "This option enables a non-admin user who can access RaspAP's management interface, but has limited ability to modify the existing configuration. This user becomes active when the current admin user is logged-out." +msgstr "Essa opção habilita um usuário não administrador que pode acessar a interface de gerenciamento do RaspAP, mas tem capacidade limitada para modificar a configuração existente. Esse usuário se torna ativo quando o usuário administrador atual é desconectado." + +msgid "Admin login failed. Please try again." +msgstr "Falha no login do administrador. Tente novamente." + +msgid "Limited privilege user mode enabled" +msgstr "Modo de usuário com privilégio limitado ativado" + +msgid "Failed to enable limited privilege user mode" +msgstr "Falha ao ativar o modo de usuário com privilégio limitado" + +msgid "Logout and enable limited user mode" +msgstr "Fazer logout e ativar o modo de usuário limitado" + +msgid "Limited user login" +msgstr "Login de usuário limitado" + +msgid "Limited user password" +msgstr "Senha de usuário limitada" + +msgid "This action will save the limited user's credentials and logout the current admin user. Save and enable limited privilege mode?" +msgstr "Essa ação salvará as credenciais do usuário limitado e fará o logout do usuário administrador atual. Salvar e ativar o modo de privilégio limitado?" + +msgid "Save and logout" +msgstr "Salvar e fazer logout" + +msgid "Admin credentials updated successfully" +msgstr "Credenciais de administrador atualizadas com sucesso" + +msgid "Limited user credentials updated successfully" +msgstr "Credenciais de usuário limitadas atualizadas com sucesso" + #: includes/configure_client.php msgid "Client settings" msgstr "Configurações do Cliente" @@ -161,8 +227,8 @@ msgstr "Nota: pontos de acesso WEP aparecem como 'Open'. Atualm msgid "No Wifi stations found" msgstr "Nenhuma estação Wi-Fi encontrada" -msgid "Reinitializing wpa_supplicant" -msgstr "Reinicializando wpa_supplicante" +msgid "Reinitialized wpa_supplicant. Choose Rescan." +msgstr "Reinicialização do wpa_supplicant. Selecione Escanear Novamente." msgid "Click 'Rescan' to search for nearby Wifi stations." msgstr "Clique em 'Reescanear' para procurar por estações Wi-Fi próximas." @@ -231,8 +297,8 @@ msgstr "Frequência" msgid "Link Quality" msgstr "Qualidade de Link" -msgid "Information provided by ip and iw and from system" -msgstr "Informações fornecidas por ip e iw e do system" +msgid "Information provided by raspap.system" +msgstr "Informações fornecidas por raspap.system" msgid "No MAC Address Found" msgstr "Endereço MAC Não Encontrado" @@ -250,13 +316,13 @@ msgid "Not connected" msgstr "Não conectado" msgid "Interface is up" -msgstr "Interface está up" +msgstr "Interface está ativa" msgid "Interface is down" -msgstr "Interface está down" +msgstr "Interface está inativa" msgid "Interface already down" -msgstr "Interface já está down" +msgstr "Interface já está inativa" msgid "Start wlan0" msgstr "Iniciar wlan0" @@ -270,11 +336,14 @@ msgstr "Dispositivos Conectados" msgid "Client: Ethernet cable" msgstr "Cliente: Cabo Ethernet" +msgid "Current status" +msgstr "Status atual" + msgid "Ethernet" msgstr "Ethernet" msgid "Client: Smartphone (USB tethering)" -msgstr "Cliente: Smartphone (ligação USB)" +msgstr "Cliente: Smartphone (compartilhamento USB)" msgid "Smartphone" msgstr "Smartphone" @@ -282,6 +351,44 @@ msgstr "Smartphone" msgid "WiFi" msgstr "WiFi" +msgid "Repeater" +msgstr "Repetidor" + +msgid "Tethering" +msgstr "Tethering" + +msgid "Cellular" +msgstr "Celular" + +msgid "AP" +msgstr "AP" + +msgid "Bridged" +msgstr "Em ponte" + +msgid "Adblock" +msgstr "Adblock" + +msgid "VPN" +msgstr "VPN" + +msgid "Netmask" +msgstr "Máscara de rede" + +msgid "5G" +msgstr "5G" + +msgid "2.4G" +msgstr "2.4G" + +msgid "%d WLAN %s" +msgstr "%d WLAN %s" + +msgid "client" +msgid_plural "clients" +msgstr[0] "cliente" +msgstr[1] "clientes" + msgid "Mobile Data Client" msgstr "Cliente de dados móveis" @@ -312,19 +419,50 @@ msgstr "Qualidade do sinal" msgid "WAN IP" msgstr "WAN IP" -msgid "Web-GUI" -msgstr "Web-GUI" - msgid "Signal strength" msgstr "Intensidade do sinal" msgid "No Client device or not yet configured" msgstr "Nenhum dispositivo cliente ou ainda não configurado" +msgid "No Client device found" +msgstr "Nenhum dispositivo cliente encontrado" + +#: includes/footer.php +msgid "Created by the %s" +msgstr "Criado pela %s" + +msgid "RaspAP Team" +msgstr "Equipe RaspAP" + +msgid "Get Insiders" +msgstr "Obter informações privilegiadas" + +msgid "Thanks for being an Insider" +msgstr "Obrigado por ser um Insider" + #: includes/dhcp.php msgid "DHCP server settings" msgstr "Configurações do servidor DHCP" +msgid "Default gateway" +msgstr "Gateway padrão" + +msgid "Install a default route for this interface" +msgstr "Instalar uma rota padrão para essa interface" + +msgid "Static IP options" +msgstr "Opções de IP estático" + +msgid "DHCP options" +msgstr "Opções de DHCP" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Ative essa opção se você quiser que o RaspAP atribua endereços IP aos clientes na interface selecionada. É necessário um endereço IP estático para essa opção." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Ative essa opção somente se quiser que o dispositivo use essa interface como rota principal para a Internet." + msgid "Client list" msgstr "Lista de Clientes" @@ -460,11 +598,11 @@ msgstr "Os clientes com um endereço MAC de hardware específico podem sempre te msgid "This option adds dhcp-host entries to the dnsmasq configuration." msgstr "Esta opção adiciona entradas dhcp-host na configuração do dnsmasq." -msgid "This toggles the gateway/nogateway option for this interface in the DHCPCD configuration." -msgstr "Isto alterna a opção de gateway/nogateway para essa interface na configuração do DHCPCD." +msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." +msgstr "Isso ativa a opção gateway/nogateway para essa interface no arquivo dhcpcd.conf." -msgid "This toggles the nohook wpa_supplicant option for this interface in the DHCPCD configuration." -msgstr "Isso ativa/desativa a opção nohook wpa_supplicant para essa interface na configuração do DHCPCD." +msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." +msgstr "Isso ativa a opção nohook wpa_supplicant para essa interface no arquivo dhcpcd.conf." msgid "Disable wpa_supplicant dhcp hook for this interface" msgstr "Desativar wpa_supplicant dhcp hook para essa interface" @@ -472,6 +610,45 @@ msgstr "Desativar wpa_supplicant dhcp hook para essa interface" msgid "If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook." msgstr "Se você gerenciar as conexões wireless utilizando o próprio wpa_supplicant, o hook pode criar eventos de conexão indesejados. Essa opção desabilita o hook." +msgid "Please provide a valid IP Address." +msgstr "Forneça um endereço IP válido." + +msgid "Please provide a valid Default gateway." +msgstr "Forneça um gateway padrão válido." + +msgid "Please provide a valid Starting IP Address." +msgstr "Forneça um endereço IP inicial válido." + +msgid "Please provide a valid Ending IP Address." +msgstr "Forneça um endereço IP final válido." + +msgid "Please provide a valid Lease Time." +msgstr "Forneça um horário de locação válido." + +msgid "Invalid interface name." +msgstr "Nome de interface inválido." + +msgid "Invalid static IP address." +msgstr "Endereço IP estático inválido." + +msgid "Invalid default gateway." +msgstr "Gateway padrão inválido." + +msgid "Invalid DHCP range start." +msgstr "Início de intervalo DHCP inválido." + +msgid "Invalid DHCP range end." +msgstr "Fim do intervalo DHCP inválido." + +msgid "Invalid DHCP lease time, not a number." +msgstr "Tempo de concessão de DHCP inválido, não um número." + +msgid "Unknown DHCP lease time unit." +msgstr "Unidade de tempo de concessão DHCP desconhecida." + +msgid "Invalid metric value, not a number." +msgstr "Valor métrico inválido, não é um número." + #: includes/hostapd.php msgid "Basic" msgstr "Básico" @@ -530,11 +707,26 @@ msgstr "Interface desconhecida" msgid "Country code must be blank or two characters" msgstr "Código de país deve ser vazio ou dois caracteres" -msgid "Wifi Hotspot settings saved" -msgstr "Configurações de ponto de acesso Wifi salvas" +msgid "DHCP configuration for %s enabled." +msgstr "Configuração DHCP para %s ativada." -msgid "Unable to save wifi hotspot settings" -msgstr "Não foi possível salvar as configurações de ponto de acesso WiFi" +msgid "DHCP configuration for %s added." +msgstr "Adicionada a configuração DHCP para %s ." + +msgid "DHCP configuration for %s updated." +msgstr "Configuração DHCP para %s atualizada." + +msgid "Interface %s has no default settings." +msgstr "A interface %s não tem configurações padrão." + +msgid "Configure settings in DHCP Server before starting AP." +msgstr "Defina as configurações no servidor DHCP antes de iniciar o AP." + +msgid "Wifi hotspot settings saved." +msgstr "Configurações de ponto de acesso Wi-Fi salvas." + +msgid "Unable to save WiFi hotspot settings." +msgstr "Não é possível salvar as configurações do ponto de acesso WiFi." msgid "Start hotspot" msgstr "Iniciar ponto de acesso" @@ -557,6 +749,12 @@ msgstr "WiFi modo cliente AP" msgid "Bridged AP mode" msgstr "Modo AP Bridged" +msgid "WiFi repeater mode" +msgstr "Modo repetidor de WiFi" + +msgid "Dual band AP mode" +msgstr "Modo AP de banda dupla" + msgid "Hide SSID in broadcast" msgstr "Esconder SSID em transmissão" @@ -600,28 +798,28 @@ msgid "WPA2 and WPA3-Personal (transitional mode)" msgstr "WPA2 e WPA3-Personal (modo de transição)" msgid "WPA3-Personal (required)" -msgstr "WPA3-Personal (Nesse modo, o suporte ao WPA3 é obrigatório)" +msgstr "WPA3-Personal (obrigatório)" msgid "Enabled (for supported clients)" -msgstr "Habilitado (para clientes suportados)" +msgstr "Ativado (para clientes compatíveis)" msgid "Required (for supported clients)" -msgstr "Necessário (para clientes suportados)" +msgstr "Obrigatório (para clientes com suporte)" msgid "802.11w extends strong cryptographic protection to a select set of robust management frames, including Deauthentication, Disassociation and certain categories of Action Management frames. Collectively, this is known as Management Frame Protection (MFP)." -msgstr "O 802.11w estende uma forte proteção criptográfica a um conjunto seleto de Robust Management Frames (RMF), incluindo desautenticação, desassociação e certas categorias de Action Management Frames. Colectivamente, isto é conhecido como Management Frame Protection (MFP)." +msgstr "O 802.11w estende a proteção criptográfica forte a um conjunto selecionado de quadros de gerenciamento robustos, incluindo Deauthentication, Disassociation e determinadas categorias de quadros Action Management. Coletivamente, isso é conhecido como Management Frame Protection (MFP)." msgid "Scan this QR code directly or %s %sprint a sign%s for your users." -msgstr "Escaneie esse QR Code diretamente ou %s %simprima uma placa%s para os usuários da rede." +msgstr "Digitalize este código QR diretamente ou imprima um sinal%s para seus usuários em %s %s." msgid "Printable Wi-Fi sign" -msgstr "Placa imprimível Wi-Fi" +msgstr "Sinal de Wi-Fi para impressão" msgid "To connect with your phone or tablet, scan the QR code above with your camera app." -msgstr "Para conectar com o seu telefone ou tablet, escaneie o QR Code acima com o seu app de câmera." +msgstr "Para se conectar com seu telefone ou tablet, escaneie o código QR acima com seu aplicativo de câmera." msgid "For other devices, use the login credentials below." -msgstr "Para outros dispositivos, use as informações de login abaixo." +msgstr "Para outros dispositivos, use as credenciais de login abaixo." msgid "Network" msgstr "Rede" @@ -641,6 +839,93 @@ msgstr "A interface selecionada (%s) não suporta operar no modo sem fio." msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set." msgstr "A opção 802.11ac 5 GHz está desativada até que seja configurada a regulação local." +msgid "WiFi repeater mode: A metric value is already defined for DHCP." +msgstr "Modo repetidor WiFi: Um valor de métrica já está definido para o DHCP." + +msgid "Restart hotspot to enable WiFi repeater mode." +msgstr "Reinicie o ponto de acesso para ativar o modo repetidor de WiFi." + +msgid "Unable to obtain metric value for client interface. Repeater mode inactive." +msgstr "Não é possível obter o valor da métrica para a interface do cliente. Modo repetidor inativo." + +msgid "Metric value configured for the %s interface." +msgstr "Valor de métrica configurado para a interface %s ." + +msgid "Parameter hiddenSSID contains invalid configuration value." +msgstr "O parâmetro hiddenSSID contém um valor de configuração inválido." + +msgid "Parameter hiddenSSID is not a number." +msgstr "O parâmetro hiddenSSID não é um número." + +msgid "Bridge interface configuration" +msgstr "Configuração da interface de ponte" + +msgid "Configure a static IP address for the br0 interface to maintain connectivity during bridge mode activation." +msgstr "Configure um endereço IP estático para a interface br0 para manter a conectividade durante a ativação do modo bridge." + +msgid "Static IP Address" +msgstr "Endereço IP estático" + +msgid "Netmask / CIDR" +msgstr "Máscara de rede / CIDR" + +msgid "Example: 192.168.1.100" +msgstr "Exemplo: 192.168.1.100" + +msgid "CIDR notation (e.g., 24 for 255.255.255.0)" +msgstr "Notação CIDR (por exemplo, 24 para 255.255.255.0)" + +msgid "Gateway" +msgstr "Gateway" + +msgid "Your router's IP address" +msgstr "O endereço IP de seu roteador" + +msgid "Usually same as gateway" +msgstr "Geralmente igual ao gateway" + +msgid "Bridge static IP address must be a valid IPv4 address" +msgstr "O endereço IP estático da ponte deve ser um endereço IPv4 válido" + +msgid "Bridge netmask must be a number between 1 and 32" +msgstr "A máscara de rede da ponte deve ser um número entre 1 e 32" + +msgid "Bridge netmask is required when using static IP" +msgstr "A máscara de rede da ponte é necessária ao usar IP estático" + +msgid "Bridge gateway must be a valid IPv4 address" +msgstr "O gateway da ponte deve ser um endereço IPv4 válido" + +msgid "Bridge gateway is required when using static IP" +msgstr "O gateway de ponte é necessário ao usar IP estático" + +msgid "Bridge DNS server must be a valid IPv4 address" +msgstr "O servidor DNS da ponte deve ser um endereço IPv4 válido" + +msgid "Bridge DNS server is required when using static IP" +msgstr "O servidor Bridge DNS é necessário ao usar IP estático" + +msgid "Bridge static IP and gateway must be in the same subnet" +msgstr "O IP estático da ponte e o gateway devem estar na mesma sub-rede" + +msgid "Please enter a valid IPv4 address" +msgstr "Digite um endereço IPv4 válido" + +msgid "Please enter a valid netmask" +msgstr "Digite uma máscara de rede válida" + +msgid "DHCP configuration for br0 enabled" +msgstr "Configuração de DHCP para br0 ativada" + +msgid "Unable to save WiFi hotspot settings due to validation errors" +msgstr "Não é possível salvar as configurações do ponto de acesso WiFi devido a erros de validação" + +msgid "Enable AP isolation" +msgstr "Ativar o isolamento do AP" + +msgid "Blocks wireless clients from seeing or connecting to each other. Recommended for guest networks and public access points." +msgstr "Impede que os clientes sem fio vejam ou se conectem uns aos outros. Recomendado para redes de convidados e pontos de acesso públicos." + #: includes/networking.php msgid "Summary" msgstr "Sumário" @@ -660,8 +945,11 @@ msgstr "Servidor DNS Alternativo" msgid "Adapter IP Address Settings" msgstr "Configurações IP do Adaptador" -msgid "Enable Fallback to Static Option" -msgstr "Habilitar Volta Para Opção Estática" +msgid "Enable fallback to static option" +msgstr "Ativar fallback para a opção estática" + +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Ative essa opção para configurar um perfil estático e voltar a ele quando houver falha na concessão do DHCP." msgid "Static IP" msgstr "IP Estático" @@ -688,16 +976,16 @@ msgid "Devices" msgstr "Dispositivos" msgid "Diagnostics" -msgstr "Diagnósticos" +msgstr "Diagnóstico" -msgid "Properties of network devices" -msgstr "Propriedades dos dispositivos de rede" +msgid "Network devices" +msgstr "Dispositivos de rede" msgid "Device" msgstr "Dispositivo" -msgid "MAC" -msgstr "MAC" +msgid "MAC address" +msgstr "Endereço MAC" msgid "USB vid/pid" msgstr "USB vid/pid" @@ -711,11 +999,11 @@ msgstr "Nome fixo" msgid "Change" msgstr "Alterar" -msgid "Settings for Mobile Data Devices" -msgstr "Configurações para dispositivos de dados móveis" +msgid "Mobile data settings" +msgstr "Configurações de dados móveis" -msgid "PIN of SIM card" -msgstr "PIN do cartão SIM" +msgid "SIM card PIN number" +msgstr "Número PIN do cartão SIM" msgid "APN Settings (Modem device ppp0)" msgstr "Configurações do APN (dispositivo Modem ppp0)" @@ -741,11 +1029,20 @@ msgstr "Tabela de roteamento" msgid "raw output" msgstr "raw output" +msgid "Setting wireless regulatory domain to %s" +msgstr "Configuração do domínio regulatório sem fio para %s" + +msgid "Please provide a valid SSID." +msgstr "Forneça um SSID válido." + +msgid "Please provide a valid PSK." +msgstr "Forneça um PSK válido." + msgid "Speedtest" msgstr "Teste de velocidade" msgid "Selecting a server" -msgstr "Selecionando um servidor" +msgstr "Seleção de um servidor" msgid "Privacy" msgstr "Privacidade" @@ -766,13 +1063,64 @@ msgid "Jitter" msgstr "Jitter" msgid "Upload" -msgstr "Upload" +msgstr "Carregar" msgid "Start" -msgstr "Iniciar" +msgstr "Início" msgid "Abort" -msgstr "Interromper" +msgstr "Abortar" + +msgid "Wireless LAN routing" +msgstr "Roteamento de LAN sem fio" + +msgid "Stop WLAN routing" +msgstr "Interromper o roteamento de WLAN" + +msgid "Start WLAN routing" +msgstr "Iniciar o roteamento de WLAN" + +msgid "Restart WLAN routing" +msgstr "Reiniciar o roteamento de WLAN" + +msgid "This option configures RaspAP to route network traffic from your wireless client (STA) interface to another available interface." +msgstr "Essa opção configura o RaspAP para rotear o tráfego de rede da interface do cliente sem fio (STA) para outra interface disponível." + +msgid "When an output interface is selected, iptables rules are added to route packets using network address translation (NAT). This is often done to share internet connectivity from a WLAN with devices on an eth0, usb0 or predictable enx interface." +msgstr "Quando uma interface de saída é selecionada, as regras do iptables são adicionadas para rotear os pacotes usando a tradução de endereços de rede (NAT). Isso geralmente é feito para compartilhar a conectividade com a Internet de uma WLAN com dispositivos em uma interface eth0, usb0 ou enx previsível." + +msgid "Wireless client interface" +msgstr "Interface de cliente sem fio" + +msgid "Output interface" +msgstr "Interface de saída" + +msgid "Configure a static IP address and DHCP for output interface" +msgstr "Configurar um endereço IP estático e DHCP para a interface de saída" + +msgid "Attempting to enable routing between %s and %s interfaces" +msgstr "Tentativa de ativar o roteamento entre as interfaces %s e %s" + +msgid "Attempting to disable routing between %s and %s interfaces" +msgstr "Tentativa de desativar o roteamento entre as interfaces %s e %s" + +msgid "No default DHCP configuration exists for the %s interface" +msgstr "Não existe nenhuma configuração DHCP padrão para a interface %s" + +msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" +msgstr "Configure um IP estático e DHCP para essa interface nas configurações do servidor DHCP" + +msgid "WLAN routing configuration saved" +msgstr "Configuração de roteamento de WLAN salva" + +msgid "Unable to save WLAN routing configuration" +msgstr "Não é possível salvar a configuração de roteamento de WLAN" + +msgid "Successfully restarted dnsmasq" +msgstr "Reiniciou o dnsmasq com sucesso" + +msgid "Failed to restart dnsmasq" +msgstr "Falha ao reiniciar o dnsmasq" #: includes/system.php msgid "System Information" @@ -808,15 +1156,33 @@ msgstr "Horário do sistema" msgid "Memory Used" msgstr "Memória utilizada" +msgid "Storage Used" +msgstr "Armazenamento utilizado" + msgid "CPU Load" msgstr "Carga de CPU" +msgid "CPU Temp" +msgstr "Temperatura da CPU" + msgid "Reboot" msgstr "Reiniciar" msgid "Shutdown" msgstr "Desligar" +msgid "System reboot" +msgstr "Reinicialização do sistema" + +msgid "System shutdown" +msgstr "Desligamento do sistema" + +msgid "Reboot now? The system will be temporarily unavailable." +msgstr "Reiniciar agora? O sistema ficará temporariamente indisponível." + +msgid "Shutdown now? The system will be unavailable." +msgstr "Desligar agora? O sistema ficará indisponível." + msgid "System Rebooting Now!" msgstr "Sistema Reiniciando Agora!" @@ -874,6 +1240,144 @@ msgstr "Selecione um tema" msgid "Color" msgstr "Cor" +msgid "Enable this option for resizable, drag and drop widgets. Best for large displays." +msgstr "Ative essa opção para widgets redimensionáveis, do tipo arrastar e soltar. Ideal para telas grandes." + +msgid "Dynamic widgets" +msgstr "Widgets dinâmicos" + +msgid "Tools" +msgstr "Ferramentas" + +msgid "System tools" +msgstr "Ferramentas do sistema" + +msgid "To generate a system debug log, click or tap the button below." +msgstr "Para gerar um registro de depuração do sistema, clique ou toque no botão abaixo." + +msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." +msgstr "As informações do registro de depuração contêm a versão do RaspAP, o estado atual e a configuração dos serviços relacionados ao AP, os pacotes de sistema instalados, a versão do kernel do Linux e os detalhes da rede. Nenhuma senha ou outros dados confidenciais são incluídos." + +msgid "Generate debug log" +msgstr "Gerar registro de depuração" + +msgid "Debug log generation in progress..." +msgstr "Geração de registro de depuração em andamento..." + +msgid "Diagnostic log size limit (KB)" +msgstr "Limite de tamanho do registro de diagnóstico (KB)" + +msgid "Changing log limit size to %s KB" +msgstr "Alteração do tamanho do limite de registro para %s KB" + +msgid "Information provided by raspap.sysinfo" +msgstr "Informações fornecidas por raspap.sysinfo" + +msgid "The following user plugins are available to extend RaspAP's functionality." +msgstr "Os seguintes plug-ins de usuário estão disponíveis para ampliar a funcionalidade do RaspAP." + +msgid "Choose Details for more information and to install a plugin." +msgstr "Selecione Detalhes para obter mais informações e instalar um plug-in." + +msgid "Network error" +msgstr "Erro de rede" + +msgid "Unable to load plugins" +msgstr "Não é possível carregar plug-ins" + +msgid "Reload" +msgstr "Recarregar" + +msgid "and try again" +msgstr "e tente novamente" + +msgid "Plugins" +msgstr "Plugins" + +msgid "Plugin details" +msgstr "Detalhes do plug-in" + +msgid "Name" +msgstr "Nome" + +msgid "Version" +msgstr "Versão" + +msgid "Description" +msgstr "Descrição" + +msgid "Plugin source" +msgstr "Fonte do plug-in" + +msgid "Author" +msgstr "Autor" + +msgid "License" +msgstr "Licença" + +msgid "Language locale" +msgstr "Localidade do idioma" + +msgid "Configuration files" +msgstr "Arquivos de configuração" + +msgid "Dependencies" +msgstr "Dependências" + +msgid "Permissions" +msgstr "Permissões" + +msgid "Non-privileged users" +msgstr "Usuários não privilegiados" + +msgid "Install now" +msgstr "Instalar agora" + +msgid "Installing plugin" +msgstr "Instalação do plug-in" + +msgid "Plugin installation in progress..." +msgstr "Instalação do plug-in em andamento..." + +msgid "Plugin install completed." +msgstr "Instalação do plug-in concluída." + +msgid "Details" +msgstr "Detalhes" + +msgid "Installed" +msgstr "Instalado" + +msgid "Alert messages" +msgstr "Mensagens de alerta" + +msgid "Alert close timeout (milliseconds)" +msgstr "Tempo limite de fechamento do alerta (milissegundos)" + +msgid "Automatically close alerts after a specified timeout" +msgstr "Fechar automaticamente os alertas após um tempo limite especificado" + +msgid "To inspect adapters attached to this device, click or tap the button below." +msgstr "Para inspecionar os adaptadores conectados a esse dispositivo, clique ou toque no botão abaixo." + +msgid "The adapter inspection tool returns details about external WLAN devices including drivers, supported modes and so on." +msgstr "A ferramenta de inspeção do adaptador retorna detalhes sobre dispositivos WLAN externos, incluindo drivers, modos suportados e assim por diante." + +msgid "Choose a network interface to inspect" +msgstr "Escolha uma interface de rede para inspecionar" + +msgid "Select an interface..." +msgstr "Selecione uma interface..." + +msgid "Adapter health check" +msgstr "Verificação da integridade do adaptador" + +msgid "Inspect adapters" +msgstr "Inspecionar adaptadores" + +msgid "Theme" +msgstr "Tema" + #: includes/data_usage.php msgid "Data usage" msgstr "Uso de dados" @@ -1099,16 +1603,16 @@ msgid "adblock" msgstr "adBlock" msgid "Ad Blocking" -msgstr "Bloqueador de anúncios" +msgstr "Ad Blocking" msgid "Start Ad Blocking" -msgstr "Iniciar o Bloqueador de Anúncios" +msgstr "Iniciar o Ad Blocking" msgid "Restart Ad Blocking" -msgstr "Reiniciar o Bloqueador de anúncios" +msgstr "Reiniciar o Ad Blocking" msgid "Blocklist settings" -msgstr "Configurações da lista de bloqueio" +msgstr "Configurações da lista de Adblock" msgid "Enable blocklists" msgstr "Habilitar lista de bloqueio" @@ -1176,14 +1680,14 @@ msgstr "Enviar uma configuração do WireGuard" msgid "This option uploads and installs an existing WireGuard .conf file on this device." msgstr "Esta opção carrega e instala um arquivo existente do WireGuard .conf neste dispositivo." -msgid "Apply iptables rules for AP interface" -msgstr "Aplicar regras do iptables para a interface AP" +msgid "Apply iptables rules to the selected interface" +msgstr "Aplicar regras do iptables à interface selecionada" -msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on the AP interface." -msgstr "Recomendado se você deseja encaminhar tráfego de rede da interface wg0 para os clientes conectados na interface de AP." +msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on a desired interface. The active AP interface is the default." +msgstr "Recomendado se você quiser encaminhar o tráfego de rede da interface wg0 para clientes conectados em uma interface desejada. A interface de AP ativa é a padrão." -msgid "This option adds iptables Postup and PostDown rules for the configured AP interface (%s)." -msgstr "Esta opção adiciona as regras do iptables Postup e PostDown para a interface AP configurada (%s)." +msgid "This option adds iptables Postup and PostDown rules for the interface selected below." +msgstr "Essa opção adiciona regras de Postup e PostDown do iptables para a interface selecionada abaixo." msgid "Select WireGuard configuration file (.conf)" msgstr "Selecionar arquivo de configuração do WireGuard (.conf)" @@ -1273,19 +1777,25 @@ msgid "WireGuard configuration failed to be updated" msgstr "A configuração do WireGuard falhou ao ser atualizada" msgid "Enable kill switch" -msgstr "Ativar kill switch" +msgstr "Ativar o kill switch" -msgid "This option adds iptables PostUp and PreDown rules for the configured AP interface (%s)." -msgstr "Esta opção adiciona as regras do iptables, Postup e PostDown para a interface AP configurada (%s)." +msgid "This option adds iptables PostUp and PreDown rules for the configured interface." +msgstr "Essa opção adiciona regras PostUp e PreDown do iptables para a interface configurada." msgid "Recommended if you wish to prevent the flow of unencrypted packets through non-WireGuard interfaces." -msgstr "Recomendado se você quer evitar o fluxo de pacotes não criptografados através de interfaces sem WireGuard." +msgstr "Recomendado se você quiser impedir o fluxo de pacotes não criptografados por meio de interfaces não-WireGuard." msgid "iptables rules added to WireGuard configuration" -msgstr "Regras do iptable adicionadas à configuração do WireGuard" +msgstr "Regras do iptables adicionadas à configuração do WireGuard" msgid "Existing iptables rules found in WireGuard configuration - not added" -msgstr "Regras do iptable existentes encontradas na configuração do WireGuard - não adicionado" +msgstr "Regras do iptables existentes encontradas na configuração do WireGuard - não adicionadas" + +msgid "Currently available WireGuard file configurations are displayed below." +msgstr "As configurações de arquivo do WireGuard atualmente disponíveis são exibidas abaixo." + +msgid "Activating a configuration will restart the wg-quick service." +msgstr "A ativação de uma configuração reiniciará o serviço wg-quick." msgid "Client Firewall" msgstr "Firewall do Cliente" @@ -1297,7 +1807,7 @@ msgid "Firewall is OFF" msgstr "O Firewall está DESATIVADO" msgid "The default firewall will only allow outgoing and already established traffic." -msgstr "O firewall padrão só permitirá tráfego de saída e o tráfego já foi estabelecido." +msgstr "O firewall padrão só permitirá tráfego de saída e tráfego já estabelecido." msgid "No incoming UDP traffic is allowed." msgstr "Nenhum tráfego UDP de entrada é permitido." @@ -1353,81 +1863,855 @@ msgstr "Desativar Firewall" msgid "Enable Firewall" msgstr "Ativar Firewall" +msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." +msgstr "A alteração do status do firewall pode interromper ou permitir o tráfego de entrada. Selecione Prosseguir para continuar." + +msgid "Proceed" +msgstr "Prosseguir" + msgid "Apply changes" msgstr "Aplicar alterações" msgid "Dynamic DNS" -msgstr "DNS dinâmico (Dynamic DNS)" +msgstr "DNS dinâmico" msgid "Service provider" msgstr "Provedor de serviços" msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." -msgstr "Selecione um serviço de DNS dinâmico suportado por ddclient na lista abaixo. Selecionar um provedor de serviço conhecido preencherá os campos protocolo e servidor. Você também pode configurar o serviço manualmente." +msgstr "Selecione um serviço de DNS dinâmico compatível com o ddclient na lista abaixo. A seleção de um provedor de serviços conhecido preencherá os campos de protocolo e servidor. Você também pode configurar o serviço manualmente." msgid "Method to obtain IP" msgstr "Método para obter o IP" msgid "Select the method used by ddclient to obtain an IP address. This value is specified in the -use option." -msgstr "Selecione o método usado pelo ddclient para obter um endereço IP. Este valor é especificado na opção -use." +msgstr "Selecione o método usado pelo ddclient para obter um endereço IP. Esse valor é especificado na opção -use." msgid "Discovery page on the web" -msgstr "" +msgstr "Página de descoberta na Web" msgid "Network interface" -msgstr "" +msgstr "Interface de rede" msgid "Network address" -msgstr "" +msgstr "Endereço de rede" msgid "Firewall status page" -msgstr "" +msgstr "Página de status do firewall" msgid "External command" -msgstr "" +msgstr "Comando externo" msgid "Web address" -msgstr "" +msgstr "Endereço da Web" msgid "Firewall" -msgstr "" +msgstr "Firewall" msgid "Command" -msgstr "" +msgstr "Comando" msgid "Example: 192.168.1.254/status.htm." -msgstr "" +msgstr "Exemplo: 192.168.1.254/status.htm." msgid "Example: /usr/local/bin/get-ip." -msgstr "" +msgstr "Exemplo: /usr/local/bin/get-ip." msgid "Domain" -msgstr "" +msgstr "Domínio" msgid "Enable SSL" -msgstr "" +msgstr "Ativar SSL" msgid "Use an encrypted SSL connection for updates. Not supported by all providers." -msgstr "" +msgstr "Use uma conexão SSL criptografada para atualizações. Não é suportado por todos os provedores." msgid "Value specified in milliseconds (ms). Default is 300." -msgstr "" +msgstr "Valor especificado em milissegundos (ms). O padrão é 300." msgid "Use the Generate log button to output detailed ddclient daemon debug info" -msgstr "" +msgstr "Use o botão Gerar registro para gerar informações detalhadas de depuração do daemon ddclient" msgid "Generate log" -msgstr "" +msgstr "Gerar registro" msgid "Information provided by ddclient" -msgstr "" +msgstr "Informações fornecidas pelo ddclient" msgid "Start Dynamic DNS" -msgstr "" +msgstr "Iniciar o DNS dinâmico" msgid "Stop Dynamic DNS" -msgstr "" +msgstr "Interromper o DNS dinâmico" msgid "Restart Dynamic DNS" -msgstr "" +msgstr "Reiniciar o DNS dinâmico" + +msgid "Account details" +msgstr "Detalhes da conta" + +msgid "My account" +msgstr "Minha conta" + +msgid "Server location" +msgstr "Localização do servidor" + +msgid "Choosing Save settings will connect to the selected country." +msgstr "Ao selecionar Salvar configurações, você se conectará ao país selecionado." + +msgid "Choosing Connect %s will connect to a recommended server." +msgstr "Ao selecionar Connect %s, você se conectará a um servidor recomendado." + +msgid "Select a country from the server location list" +msgstr "Selecione um país na lista de localização do servidor" + +msgid "Select a country..." +msgstr "Selecione um país..." + +msgid "Account information not available from %s's Linux CLI." +msgstr "Informações da conta não disponíveis na CLI do Linux do %s." + +msgid "Attempting to connect to %s" +msgstr "Tentativa de conexão com %s" + +msgid "Attempting to connect VPN provider" +msgstr "Tentativa de conexão com o provedor de VPN" + +msgid "Attempting to disconnect VPN provider" +msgstr "Tentativa de desconectar o provedor de VPN" + +msgid "Expected %s binary not found at: %s" +msgstr "O binário esperado de %s não foi encontrado em: %s" + +msgid "Visit the installation instructions for %s's Linux CLI." +msgstr "Acesse as instruções de instalação da CLI do Linux do %s." + +msgid "Unable to execute %s binary found at: %s" +msgstr "Não foi possível executar o binário %s encontrado em: %s" + +msgid "Check that binary is executable and permissions exist in raspap.sudoers" +msgstr "Verifique se o binário é executável e se as permissões existem em raspap.sudoers" + +msgid "Installed Linux CLI: %s" +msgstr "CLI do Linux instalada: %s" + +msgid "Current %s connection status is displayed below." +msgstr "Atual %s O status atual da conexão é exibido abaixo." + +msgid "Information provided by %s" +msgstr "Informações fornecidas por %s" + +msgid "Connect %s" +msgstr "Conecte %s" + +msgid "Disconnect %s" +msgstr "Desconecte %s" + +msgid "About" +msgstr "Sobre" + +msgid "Insiders" +msgstr "Insiders" + +msgid "Contributing" +msgstr "Contribuição" + +msgid "Check for update" +msgstr "Verificar se há atualizações" + +msgid "New release check in progress..." +msgstr "Verificação de nova versão em andamento..." + +msgid "A new release is available: Version" +msgstr "Uma nova versão está disponível: Versão" + +msgid "Installed version is the latest release." +msgstr "A versão instalada é a última versão." + +msgid "GitHub authentication" +msgstr "Autenticação do GitHub" + +msgid "Updating Insiders requires GitHub authentication." +msgstr "A atualização de Insiders requer a autenticação do GitHub." + +msgid "Your credentials will be sent to GitHub securely with SSL. However, use caution if your RaspAP install is on a WLAN shared by untrusted users." +msgstr "Suas credenciais serão enviadas para o GitHub de forma segura com SSL. No entanto, tenha cuidado se a instalação do RaspAP estiver em uma WLAN compartilhada por usuários não confiáveis." + +msgid "Personal Access Token" +msgstr "Token de acesso pessoal" + +msgid "Please provide a valid token." +msgstr "Forneça um token válido." + +msgid "Perform update" +msgstr "Realizar atualização" + +msgid "Update in progress" +msgstr "Atualização em andamento" + +msgid "Application is being updated..." +msgstr "O aplicativo está sendo atualizado..." + +msgid "Configuring update" +msgstr "Configuração de atualização" + +msgid "Updating sources" +msgstr "Atualização de fontes" + +msgid "Installing package updates" +msgstr "Instalação de atualizações de pacotes" + +msgid "Downloading latest files" +msgstr "Download dos arquivos mais recentes" + +msgid "Installing application" +msgstr "Instalação do aplicativo" + +msgid "Update complete" +msgstr "Atualização concluída" + +msgid "An error occurred. Check the log at /tmp/raspap_install.log" +msgstr "Ocorreu um erro. Verifique o registro em /tmp/raspap_install.log" + +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "O RaspAP é uma cocriação de %1$s e %2$s com as contribuições de nossos %3$s e %4$s. Saiba mais sobre como participar do projeto como um %5$s, %6$s ou %7$s com acesso imediato a %8$s disponível para %9$s." + +msgid "developer community" +msgstr "comunidade de desenvolvedores" + +msgid "language translators" +msgstr "tradutores de idiomas" + +msgid "code contributor" +msgstr "colaborador de código" + +msgid "translator" +msgstr "tradutor" + +msgid "financial sponsor" +msgstr "patrocinador financeiro" + +msgid "exclusive features" +msgstr "recursos exclusivos" + +msgid "RaspAP Exception" +msgstr "Exceção RaspAP" + +msgid "An exception occurred" +msgstr "Ocorreu uma exceção" + +msgid "RestAPI" +msgstr "RestAPI" + +msgid "RestAPI settings" +msgstr "Configurações da RestAPI" + +msgid "Start RestAPI service" +msgstr "Iniciar o serviço RestAPI" + +msgid "Stop RestAPI service" +msgstr "Interromper o serviço RestAPI" + +msgid "API Key" +msgstr "Chave da API" + +msgid "Saving API key" +msgstr "Salvando a chave da API" + +msgid "RestAPI status" +msgstr "Status da RestAPI" + +msgid "Current restapi.service status is displayed below." +msgstr "O status atual do restapi.service é exibido abaixo." + +msgid "RestAPI docs are accessible here%s" +msgstr "Os documentos da RestAPI podem ser acessados aqui%s" + +msgid "Restarting restapi.service" +msgstr "Reiniciar o restapi.service" + +msgid "Information provided by restapi.service" +msgstr "Informações fornecidas por restapi.service" + +msgid "Session Expired" +msgstr "Sessão expirada" + +msgid "Your session has expired. Please login to continue." +msgstr "Sua sessão expirou. Faça login para continuar." + +msgid "Login" +msgstr "Login" + +msgid "Administrator login" +msgstr "Login de administrador" + +msgid "Forgot password" +msgstr "Esqueci minha senha" + +msgid "Login failed" +msgstr "Falha no login" + +msgid "NTP Server" +msgstr "Servidor NTP" + +msgid "NTP Server settings" +msgstr "Configurações do servidor NTP" + +msgid "NTP daemon" +msgstr "Daemon NTP" + +msgid "Synchronized time" +msgstr "Hora sincronizada" + +msgid "NTP servers" +msgstr "Servidores NTP" + +msgid "Add an NTP server" +msgstr "Adicionar um servidor NTP" + +msgid "Start NTP service" +msgstr "Iniciar o serviço NTP" + +msgid "Stop NTP service" +msgstr "Interromper o serviço NTP" + +msgid "Edit mode" +msgstr "Modo de edição" + +msgid "Use the Edit mode toggle to manually edit the current ntp.config configuration." +msgstr "Use o botão de alternância do modo Editar para editar manualmente a configuração atual do ntp.config." + +msgid "Specify a public NTP server or a private one on your local network. IPv4 and IPv6 address, or a fully qualified domain name (FQDN) are acceptable values." +msgstr "Especifique um servidor NTP público ou um servidor privado em sua rede local. O endereço IPv4 e IPv6 ou um nome de domínio totalmente qualificado (FQDN) são valores aceitáveis." + +msgid "Public NTP servers supporting Network Time Security (NTS) may be specified with the nts suffix." +msgstr "Os servidores NTP públicos que oferecem suporte ao Network Time Security (NTS) podem ser especificados com o sufixo nts." + +msgid "Examples of valid server entries include %s, %s and %s." +msgstr "Exemplos de entradas de servidor válidas incluem %s, %s e %s." + +msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." +msgstr "O status atual do par ntpq é exibido abaixo. Um asterisco(*) indica o servidor preferencial." + +msgid "NTP configuration cannot be empty" +msgstr "A configuração do NTP não pode estar vazia" + +msgid "Restarting ntpd.service" +msgstr "Reiniciar o ntpd.service" + +msgid "Please enter a valid NTP server" +msgstr "Digite um servidor NTP válido" + +msgid "Attempting to start ntp.service" +msgstr "Tentativa de iniciar o ntp.service" + +msgid "Attempting to stop ntp.service" +msgstr "Tentativa de interromper o ntp.service" + +msgid "NTP configuration not found at %s" +msgstr "Configuração de NTP não encontrada em %s" + +msgid "NTP configuration updated" +msgstr "Configuração NTP atualizada" + +msgid "Advertising device as a Tailscale exit node" +msgstr "Dispositivo de publicidade como um nó de saída do Tailscale" + +msgid "Attempting to optimize UDP throughput" +msgstr "Tentativa de otimizar a taxa de transferência UDP" + +msgid "Kernel transport layer offloads enabled for UDP" +msgstr "Descargas da camada de transporte do kernel ativadas para UDP" + +msgid "Failed to enable kernel transport layer offloads for UDP" +msgstr "Falha ao ativar as descargas da camada de transporte do kernel para UDP" + +msgid "Attempting to set tailscale up" +msgstr "Tentativa de configurar o tailscale" + +msgid "Attempting to set tailscale down" +msgstr "Tentativa de reduzir o tailscale" + +msgid "Attempting to disconnect from tailscale" +msgstr "Tentativa de desconectar-se do tailscale" + +msgid "Disconnected from tailscale and expired node key" +msgstr "Desconectado do tailscale e com a chave de nó expirada" + +msgid "Unable to disconnect from tailscale" +msgstr "Não é possível desconectar do tailscale" + +msgid "Expected tailscale binary not found at: %" +msgstr "O binário esperado do tailscale não foi encontrado em: %" + +msgid "A Tailscale VPN exit node extension for RaspAP" +msgstr "Uma extensão de nó de saída VPN Tailscale para RaspAP" + +msgid "Unable to retrieve Tailscale login. Choose %s to continue." +msgstr "Não foi possível recuperar o login do Tailscale. Selecione %s para continuar." + +msgid "Start Tailscale" +msgstr "Iniciar Tailscale" + +msgid "Stop Tailscale" +msgstr "Parar o Tailscale" + +msgid "Next" +msgstr "Próximo" + +msgid "Device approved and activated as a Tailscale exit node" +msgstr "Dispositivo aprovado e ativado como um nó de saída Tailscale" + +msgid "Not connected: Login required." +msgstr "Não conectado: É necessário fazer login." + +msgid "Tailscale VPN" +msgstr "VPN em escala de cauda" + +msgid "Exit node activated" +msgstr "Nó de saída ativado" + +msgid "The device %s is connected with the address %s and offers an exit node." +msgstr "O dispositivo %s está conectado com o endereço %s e oferece um nó de saída." + +msgid "See the %s on how to use this exit node with your devices." +msgstr "Consulte o site %s para saber como usar esse nó de saída com seus dispositivos." + +msgid "Allow exit node" +msgstr "Permitir nó de saída" + +msgid "The device %s is pending approval as an exit node." +msgstr "O dispositivo %s está aguardando aprovação como um nó de saída." + +msgid "Locate the %s Exit Node badge in the machines list." +msgstr "Localize o emblema %s Exit Node (Nó de saída ) na lista de máquinas." + +msgid "Open Tailscale Machines" +msgstr "Máquinas abertas em escala de cauda" + +msgid "To allow this device as an exit node, choose Open Tailscale Machines." +msgstr "Para permitir esse dispositivo como um nó de saída, selecione Abrir máquinas em escala de cauda." + +msgid "From the %s icon menu of the exit node, open the %s panel." +msgstr "No menu de ícones %s do nó de saída, abra o painel %s ." + +msgid "Edit route settings" +msgstr "Editar configurações de rota" + +msgid "Login to Tailscale" +msgstr "Faça login no Tailscale" + +msgid "To connect device %s to your tailnet, choose %s." +msgstr "Para conectar o dispositivo %s à sua rede traseira, selecione %s." + +msgid "After logging in, choose Next to continue." +msgstr "Depois de fazer o login, selecione Próximo para continuar." + +msgid "Configure exit node" +msgstr "Configurar o nó de saída" + +msgid "The device %s is connected to your tailnet with the address %s." +msgstr "O dispositivo %s está conectado à sua tailnet com o endereço %s." + +msgid "By default, Tailscale only routes traffic between the devices on which it's been installed. You can also route all your public internet traffic by configuring a device on your network as a exit node" +msgstr "Por padrão, o Tailscale roteia apenas o tráfego entre os dispositivos nos quais foi instalado. Você também pode rotear todo o tráfego público da Internet configurando um dispositivo em sua rede como um nó de saída" + +msgid "When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN." +msgstr "Quando você roteia todo o tráfego por meio de um nó de saída, está efetivamente usando rotas padrão (0.0.0.0/0, ::/0), da mesma forma que faria se estivesse usando uma VPN típica." + +msgid "You have the option of configuring this device as an exit node, or using another exit node in your tailnet." +msgstr "Você tem a opção de configurar esse dispositivo como um nó de saída ou usar outro nó de saída em sua tailnet." + +msgid "Select an existing exit node on your tailnet" +msgstr "Selecione um nó de saída existente em sua tailnet" + +msgid "This is a typical configuration if you're using this device as a VPN travel router, for example." +msgstr "Essa é uma configuração típica se você estiver usando esse dispositivo como um roteador de viagem VPN, por exemplo." + +msgid "Configure this device as a new exit node" +msgstr "Configurar esse dispositivo como um novo nó de saída" + +msgid "By configuring this device as an exit node, public internet traffic from devices connected in your tailnet will be routed through it." +msgstr "Ao configurar esse dispositivo como um nó de saída, o tráfego público da Internet de dispositivos conectados em sua tailnet será roteado por ele." + +msgid "For security reasons, you must opt in to enable exit node functionality. The first step is to advertise %s as an exit node in your tailnet. In the next step, you'll allow this device to be an exit node." +msgstr "Por motivos de segurança, você deve optar por ativar a funcionalidade do nó de saída. A primeira etapa é anunciar %s como um nó de saída em sua tailnet. Na próxima etapa, você permitirá que esse dispositivo seja um nó de saída." + +msgid "Advertise %s as an exit node" +msgstr "Anunciar %s como um nó de saída" + +msgid "This effectively configures Tailscale as a VPN to mask your real location, access region-restricted content, or enhance privacy when connecting from untrusted networks." +msgstr "Isso configura efetivamente o Tailscale como uma VPN para mascarar sua localização real, acessar conteúdo restrito por região ou aumentar a privacidade ao se conectar a partir de redes não confiáveis." + +msgid "This option lets Tailscale know your device is ready to route traffic." +msgstr "Essa opção permite que o Tailscale saiba que seu dispositivo está pronto para rotear o tráfego." + +msgid "Recommended for Tailscale exit nodes with Linux 6.2 or later kernels, this uses UDP generic receive offload (GRO) forwarding to reduce CPU overhead." +msgstr "Recomendado para nós de saída do Tailscale com kernels Linux 6.2 ou posteriores, ele usa o encaminhamento de descarga de recebimento genérico (GRO) UDP para reduzir a sobrecarga da CPU." + +msgid "This option enables transport layer offloads for better performance." +msgstr "Essa opção habilita as descargas da camada de transporte para melhorar o desempenho." + +msgid "Select an exit node" +msgstr "Selecione um nó de saída" + +msgid "To use %s as a VPN gateway, configure Tailscale to use an exit node. Tailscale's suggested node is indicated with a star." +msgstr "Para usar o %s como um gateway de VPN, configure o Tailscale para usar um nó de saída. O nó sugerido pelo Tailscale é indicado por uma estrela." + +msgid "Advertise a subnet route for the active %s AP interface" +msgstr "Anunciar uma rota de sub-rede para a %s interface AP ativa" + +msgid "Subnet routes let you extend your Tailscale network (known as a tailnet) to include devices that don't or can't run the Tailscale client." +msgstr "As rotas de sub-rede permitem que você estenda sua rede Tailscale (conhecida como tailnet) para incluir dispositivos que não executam ou não podem executar o cliente Tailscale." + +msgid "A subnet route acts as a gateway between your tailnet and a physical subnet. The subnet of the active AP interface is preconfigured below; edit if necessary." +msgstr "Uma rota de sub-rede funciona como um gateway entre sua tailnet e uma sub-rede física. A sub-rede da interface AP ativa está pré-configurada abaixo; edite-a, se necessário." + +msgid "Route LAN traffic through the exit node." +msgstr "Encaminhar o tráfego da LAN pelo nó de saída." + +msgid "This will direct all LAN traffic to go through your exit node only." +msgstr "Isso direcionará todo o tráfego da LAN para passar somente pelo seu nó de saída." + +msgid "Choose Next to configure %s to use the selected exit node with these options." +msgstr "Selecione Próximo para configurar %s para usar o nó de saída selecionado com essas opções." + +msgid "No exit nodes found on your tailnet. Choose Back to continue." +msgstr "Nenhum nó de saída foi encontrado em sua tailnet. Selecione Voltar para continuar." + +msgid "Using exit node" +msgstr "Usando o nó de saída" + +msgid "The device %s is configured to use exit node %s. It has the Tailscale MagicDNS address %s." +msgstr "O dispositivo %s está configurado para usar o nó de saída %s. Ele tem o endereço Tailscale MagicDNS %s." + +msgid "Choose Save settings to continue." +msgstr "Selecione Salvar configurações para continuar." + +msgid "Choose Next to continue." +msgstr "Selecione Próximo para continuar." + +msgid "Tailnet status" +msgstr "Status da tampa traseira" + +msgid "Current tailnet status is displayed below." +msgstr "O status atual do capô traseiro é exibido abaixo." + +msgid "Use Tailscale DNS settings (default)." +msgstr "Usar as configurações de DNS do Tailscale (padrão)." + +msgid "Uncheck to use local DNS. This sets --accept-dns=false." +msgstr "Desmarque para usar o DNS local. Isso define --accept-dns=false." + +msgid "Do not use Tailscale subnets (default on Linux)." +msgstr "Não use sub-redes Tailscale (padrão no Linux)." + +msgid "If subnet routes exist for your tailnet, you can route your device's traffic to a subnet router. Enabling this sets --accept-routes=true." +msgstr "Se houver rotas de sub-rede para a sua tailnet, você poderá rotear o tráfego do seu dispositivo para um roteador de sub-rede. A ativação dessa opção define --accept-routes=true." + +msgid "If keys expire for a device, connections to/from the given endpoint will stop working." +msgstr "Se as chaves expirarem para um dispositivo, as conexões de/para o endpoint fornecido deixarão de funcionar." + +msgid "This option uses --force-reauth to renew the keys for this device." +msgstr "Essa opção usa --force-reauth para renovar as chaves desse dispositivo." + +msgid "Start capture" +msgstr "Iniciar captura" + +msgid "Stop capture" +msgstr "Parar a captura" + +msgid "Capture files" +msgstr "Capturar arquivos" + +msgid "Capture interface" +msgstr "Interface de captura" + +msgid "Output file" +msgstr "Arquivo de saída" + +msgid "Path where capture file will be saved (.pcap format)" +msgstr "Caminho onde o arquivo de captura será salvo (formato .pcap)" + +msgid "File will be saved with .pcap extension" +msgstr "O arquivo será salvo com a extensão .pcap" + +msgid "Capture filter (BPF syntax)" +msgstr "Filtro de captura (sintaxe BPF)" + +msgid "Berkeley Packet Filter syntax. Leave empty to capture all traffic." +msgstr "Sintaxe do Berkeley Packet Filter. Deixe em branco para capturar todo o tráfego." + +msgid "Examples: port 80, host 192.168.1.1, tcp and not port 22" +msgstr "Exemplos: porta 80, host 192.168.1.1, tcp e não porta 22" + +msgid "Capture limits" +msgstr "Limites de captura" + +msgid "Packet count limit" +msgstr "Limite de contagem de pacotes" + +msgid "Stop capture after this many packets. Leave empty for unlimited." +msgstr "Interrompa a captura após essa quantidade de pacotes. Deixe em branco para ilimitado." + +msgid "Duration limit (seconds)" +msgstr "Limite de duração (segundos)" + +msgid "Stop capture after this many seconds. Leave empty for unlimited." +msgstr "Interrompa a captura após esse número de segundos. Deixe em branco para ilimitado." + +msgid "Ring buffer settings" +msgstr "Configurações do buffer de anel" + +msgid "File size (KB)" +msgstr "Tamanho do arquivo (KB)" + +msgid "Create new file when this size is reached. Leave empty to disable." +msgstr "Criar novo arquivo quando esse tamanho for atingido. Deixe em branco para desativar." + +msgid "10000 = 10 MB per file" +msgstr "10000 = 10 MB por arquivo" + +msgid "Number of files" +msgstr "Número de arquivos" + +msgid "Maximum number of ring buffer files to keep. Oldest files are deleted." +msgstr "Número máximo de arquivos do buffer de anel a serem mantidos. Os arquivos mais antigos são excluídos." + +msgid "Advanced options" +msgstr "Opções avançadas" + +msgid "Snapshot length (bytes)" +msgstr "Comprimento do instantâneo (bytes)" + +msgid "Limit the amount of data captured per packet. Leave empty for full packets." +msgstr "Limite a quantidade de dados capturados por pacote. Deixe em branco para pacotes completos." + +msgid "96 bytes captures headers only, reduces file size" +msgstr "96 bytes capturam apenas os cabeçalhos, reduzindo o tamanho do arquivo" + +msgid "Promiscuous mode" +msgstr "Modo promíscuo" + +msgid "Capture all packets on the network segment, not just those destined for this interface" +msgstr "Capturar todos os pacotes no segmento de rede, não apenas aqueles destinados a essa interface" + +msgid "Quick filter presets" +msgstr "Predefinições rápidas de filtro" + +msgid "Capture files generated by tshark are displayed below." +msgstr "Os arquivos de captura gerados pelo tshark são exibidos abaixo." + +msgid "No capture files found in /tmp directory" +msgstr "Nenhum arquivo de captura encontrado no diretório /tmp" + +msgid "Filename" +msgstr "Nome do arquivo" + +msgid "Size" +msgstr "Tamanho" + +msgid "Modified" +msgstr "Modificado" + +msgid "Actions" +msgstr "Ações" + +msgid "Download file" +msgstr "Baixar arquivo" + +msgid "Delete file" +msgstr "Excluir arquivo" + +msgid "Confirm deletion" +msgstr "Confirmar a exclusão" + +msgid "Are you sure you want to delete this file?" +msgstr "Tem certeza de que deseja excluir esse arquivo?" + +msgid "All Traffic" +msgstr "Todo o tráfego" + +msgid "HTTP/HTTPS" +msgstr "HTTP/HTTPS" + +msgid "ICMP (Ping)" +msgstr "ICMP (Ping)" + +msgid "SSH" +msgstr "SSH" + +msgid "Exclude SSH" +msgstr "Excluir SSH" + +msgid "A Wireshark (TShark) CLI packet capture for RaspAP" +msgstr "Uma captura de pacote da CLI do Wireshark (TShark) para o RaspAP" + +msgid "Information provided by tshark" +msgstr "Informações fornecidas pelo tshark" + +msgid "Total: %d file(s), %s" +msgstr "Total: %d arquivo(s), %s" + +msgid "Captive portal" +msgstr "Portal cativo" + +msgid "Gateway interface" +msgstr "Interface de gateway" + +msgid "Gateway name" +msgstr "Nome do gateway" + +msgid "Gateway address" +msgstr "Endereço do gateway" + +msgid "Gateway port" +msgstr "Porta de gateway" + +msgid "Defaults to the active AP interface, typically wlan0" +msgstr "O padrão é a interface de AP ativa, normalmente wlan0" + +msgid "Auto-detected from gateway interface if not specified" +msgstr "Detectado automaticamente a partir da interface do gateway, se não for especificado" + +msgid "Start portal" +msgstr "Iniciar portal" + +msgid "Stop portal" +msgstr "Parar o portal" + +msgid "Information provided by nodogsplash" +msgstr "Informações fornecidas por nodogsplash" + +msgid "Stop portal service" +msgstr "Interromper o serviço do portal" + +msgid "Start portal service" +msgstr "Iniciar o serviço do portal" + +msgid "Changing the portal service will momentarily disrupt client traffic. Choose Proceed to continue." +msgstr "A alteração do serviço do portal interromperá momentaneamente o tráfego de clientes. Selecione Prosseguir para continuar." + +msgid "Interface to be managed by the portal" +msgstr "Interface a ser gerenciada pelo portal" + +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "Nome do seu gateway (disponível como variável \\$gatewayname)" + +msgid "IP address of the router. Leave empty for auto-detection" +msgstr "Endereço IP do roteador. Deixe em branco para a detecção automática" + +msgid "Port for Nodogsplash HTTP server" +msgstr "Porta do servidor HTTP do Nodogsplash" + +msgid "Maximum clients" +msgstr "Máximo de clientes" + +msgid "Session timeout (minutes)" +msgstr "Tempo limite da sessão (minutos)" + +msgid "Pre-auth idle timeout (minutes)" +msgstr "Tempo limite de inatividade da pré-autenticação (minutos)" + +msgid "Does not include users on the trusted MAC list" +msgstr "Não inclui usuários na lista de MACs confiáveis" + +msgid "Auth idle timeout (minutes)" +msgstr "Tempo limite de inatividade da autenticação (minutos)" + +msgid "Check interval (seconds)" +msgstr "Intervalo de verificação (segundos)" + +msgid "MAC address control" +msgstr "Controle de endereço MAC" + +msgid "MAC mechanism" +msgstr "Mecanismo MAC" + +msgid "Blocked MAC list" +msgstr "Lista de MACs bloqueados" + +msgid "Trusted MAC list" +msgstr "Lista de MACs confiáveis" + +msgid "These devices are not subject to authentication or firewall rules" +msgstr "Esses dispositivos não estão sujeitos a regras de autenticação ou de firewall" + +msgid "Maximum number of concurrent authenticated users" +msgstr "Número máximo de usuários autenticados simultâneos" + +msgid "Default session length in minutes. 0 = unlimited" +msgstr "Duração padrão da sessão em minutos. 0 = ilimitado" + +msgid "Time before unauthenticated idle users are removed" +msgstr "Tempo até que os usuários inativos não autenticados sejam removidos" + +msgid "Time before authenticated idle users are deauthenticated" +msgstr "Tempo antes que os usuários ociosos autenticados sejam desautenticados" + +msgid "How often to check client timeouts" +msgstr "Com que frequência verificar os tempos limite do cliente" + +msgid "Block: blocklisted MACs are blocked. Allow: only allowlisted MACs are allowed" +msgstr "Block: os MACs listados na blocklist são bloqueados. Allow: somente os MACs da lista de permissões são permitidos" + +msgid "Example: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" +msgstr "Exemplo: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" + +msgid "Comma-separated MAC addresses that bypass authentication entirely" +msgstr "Endereços MAC separados por vírgula que ignoram totalmente a autenticação" + +msgid "Block (blocklist mode)" +msgstr "Bloqueio (modo de lista de bloqueio)" + +msgid "Allow (allowlist mode)" +msgstr "Permitir (modo de lista de permissões)" + +msgid "Gateway IP range" +msgstr "Faixa de IP do gateway" + +msgid "Default: 0.0.0.0/0 (all addresses)" +msgstr "Padrão: 0.0.0.0/0 (todos os endereços)" + +msgid "Debug level" +msgstr "Nível de depuração" + +msgid "Firewall settings" +msgstr "Configurações de firewall" + +msgid "Allow all traffic for authenticated users" +msgstr "Permitir todo o tráfego para usuários autenticados" + +msgid "Allow DNS for pre-authenticated users" +msgstr "Permitir DNS para usuários pré-autenticados" + +msgid "IP range to manage in CIDR notation. Leave empty for all addresses" +msgstr "Faixa de IP a ser gerenciada na notação CIDR. Deixe em branco para todos os endereços" + +msgid "Amount of logging detail reported by the nodogsplash.service" +msgstr "Quantidade de detalhes de registro relatados pelo nodogsplash.service" + +msgid "0 - Errors only" +msgstr "0 - Somente erros" + +msgid "1 - Errors, warnings, infos" +msgstr "1 - Erros, avisos, informações" + +msgid "2 - Errors, warnings, infos, verbose" +msgstr "2 - Erros, avisos, informações, detalhado" + +msgid "3 - Errors, warnings, infos, verbose, debug" +msgstr "3 - Erros, avisos, informações, detalhamento, depuração" + +msgid "When enabled, authenticated users have unrestricted access" +msgstr "Quando ativado, os usuários autenticados têm acesso irrestrito" + +msgid "Required for clients to resolve domain names before authentication" +msgstr "Necessário para que os clientes resolvam os nomes de domínio antes da autenticação" + +msgid "Portal status" +msgstr "Status do portal" + +msgid "Current nodogsplash status is displayed below." +msgstr "O status atual do nodogsplash é exibido abaixo." diff --git a/locale/ru_RU/LC_MESSAGES/messages.mo b/locale/ru_RU/LC_MESSAGES/messages.mo index 2dd711b0..2f760db5 100644 Binary files a/locale/ru_RU/LC_MESSAGES/messages.mo and b/locale/ru_RU/LC_MESSAGES/messages.mo differ diff --git a/locale/ru_RU/LC_MESSAGES/messages.po b/locale/ru_RU/LC_MESSAGES/messages.po index b50f2805..e04ca330 100644 --- a/locale/ru_RU/LC_MESSAGES/messages.po +++ b/locale/ru_RU/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2020-04-14 08:51\n" +"PO-Revision-Date: 2025-11-20 12:21\n" "Last-Translator: Bill Zimmerman \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -12,8 +12,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" "X-Crowdin-Project: raspap\n" +"X-Crowdin-Project-ID: 395801\n" "X-Crowdin-Language: ru\n" "X-Crowdin-File: /master/locale/en_US/LC_MESSAGES/messages.po\n" +"X-Crowdin-File-ID: 10\n" #: index.php msgid "RaspAP Wifi Configuration Portal" @@ -22,8 +24,8 @@ msgstr "Портал настройки RaspAP Wifi" msgid "Toggle navigation" msgstr "Переключение навигации" -msgid "RaspAP Wifi Portal" -msgstr "Портал RaspAP Wifi" +msgid "RaspAP Admin Panel" +msgstr "Панель администратора RaspAP" msgid "Dashboard" msgstr "Приборная панель" @@ -31,14 +33,20 @@ msgstr "Приборная панель" msgid "WiFi client" msgstr "WiFi клиента" +msgid "Status" +msgstr "Статус" + msgid "Hotspot" msgstr "Точка доступа" -msgid "Memory Use" -msgstr "" +msgid "Logging" +msgstr "Журналирование" -msgid "CPU Temp" -msgstr "" +msgid "Mem Use" +msgstr "Память" + +msgid "CPU" +msgstr "ЦП" msgid "Networking" msgstr "Сетевые" @@ -47,17 +55,14 @@ msgid "DHCP Server" msgstr "DHCP сервер" msgid "OpenVPN" -msgstr "" +msgstr "OpenVPN" msgid "TOR proxy" -msgstr "" +msgstr "TOR proxy" msgid "Authentication" msgstr "авторизации" -msgid "Change Theme" -msgstr "Сменить тему" - msgid "System" msgstr "Система" @@ -95,12 +100,75 @@ msgstr "Новый пароль" msgid "Repeat new password" msgstr "Повторить новый пароль" +msgid "Please provide a valid username." +msgstr "Укажите действительное имя пользователя." + +msgid "Please provide a valid password." +msgstr "Укажите действительный пароль." + +msgid "Please enter your old password." +msgstr "Введите старый пароль." + +msgid "Please enter a new password." +msgstr "Введите новый пароль." + +msgid "Please re-enter your new password." +msgstr "Введите новый пароль ещё раз." + +msgid "Avatar" +msgstr "Аватар" + +msgid "Click or tap to upload a new user avatar." +msgstr "Нажмите, чтобы загрузить новый аватар пользователя." + +msgid "Image files of type JPG, GIF or PNG are accepted. Max file size: 2 MB." +msgstr "Принимаются файлы изображений типа JPG, GIF или PNG. Максимальный размер файла: 2 МБ." + +msgid "Reset avatar" +msgstr "Сбросить аватар" + +msgid "Enable limited privilege user" +msgstr "Включить пользователя с ограниченными правами" + +msgid "This option enables a non-admin user who can access RaspAP's management interface, but has limited ability to modify the existing configuration. This user becomes active when the current admin user is logged-out." +msgstr "Эта опция создаёт пользователя без прав администратора, который может получить доступ к интерфейсу управления RaspAP, но имеет ограниченные возможности по изменению существующей конфигурации. Этот пользователь становится активным, когда администратор выходит из системы." + +msgid "Admin login failed. Please try again." +msgstr "Вход администратора не выполнен. Попробуйте ещё раз." + +msgid "Limited privilege user mode enabled" +msgstr "Режим пользователя с ограниченными правами включён" + +msgid "Failed to enable limited privilege user mode" +msgstr "Не удалось включить режим пользователя с ограниченными правами" + +msgid "Logout and enable limited user mode" +msgstr "Выйти и включить режим ограниченного пользователя" + +msgid "Limited user login" +msgstr "Логин ограниченного пользователя" + +msgid "Limited user password" +msgstr "Пароль ограниченного пользователя" + +msgid "This action will save the limited user's credentials and logout the current admin user. Save and enable limited privilege mode?" +msgstr "Это действие сохранит учётные данные ограниченного пользователя и выполнит выход администратора. Сохранить и включить режим ограниченных прав?" + +msgid "Save and logout" +msgstr "Сохранить и выйти" + +msgid "Admin credentials updated successfully" +msgstr "Учётные данные администратора успешно обновлены" + +msgid "Limited user credentials updated successfully" +msgstr "Учётные данные ограниченного пользователя успешно обновлены" + #: includes/configure_client.php msgid "Client settings" msgstr "Настройки клиента" msgid "SSID" -msgstr "" +msgstr "SSID" msgid "Channel" msgstr "Канал" @@ -144,9 +212,33 @@ msgstr "Скрыть" msgid "Not configured" msgstr "Не настроено" +msgid "Connected" +msgstr "Подключено" + +msgid "Known" +msgstr "Известная" + +msgid "Nearby" +msgstr "Поблизости" + msgid "Note: WEP access points appear as 'Open'. RaspAP does not currently support connecting to WEP" msgstr "Note: точки доступа WEP показаны как 'Открытые'. RaspAP в данный момент не поддерживает подключение WEP" +msgid "No Wifi stations found" +msgstr "Станции WiFi не найдены" + +msgid "Reinitialized wpa_supplicant. Choose Rescan." +msgstr "wpa_supplicant переинициализирован. Выберите Повторить сканирование." + +msgid "Click 'Rescan' to search for nearby Wifi stations." +msgstr "Нажмите 'Повторить сканирование' для поиска ближайших станций WiFi." + +msgid "Click 'Reinitialize' to force reinitialize wpa_supplicant." +msgstr "Нажмите 'Переинициализировать', чтобы принудительно переинициализировать wpa_supplicant." + +msgid "Reinitialize" +msgstr "Переинициализировать" + #: includes/dashboard.php msgid "Interface Information" msgstr "Информация об интерфейсе" @@ -182,7 +274,7 @@ msgid "Transferred Bytes" msgstr "Передано Байт" msgid "Wireless Client" -msgstr "" +msgstr "WiFi клиент" msgid "Connected To" msgstr "Подключено к" @@ -205,8 +297,8 @@ msgstr "Частота" msgid "Link Quality" msgstr "Качество соединения" -msgid "Information provided by ip and iw and from system" -msgstr "Информация, представленная IP и IW и из системы" +msgid "Information provided by raspap.system" +msgstr "Информация предоставлена raspap.system" msgid "No MAC Address Found" msgstr "MAC-адрес не найден" @@ -241,16 +333,150 @@ msgstr "Остановка wlan0" msgid "Connected Devices" msgstr "Подключенные устройства" +msgid "Client: Ethernet cable" +msgstr "Клиент: Кабель Ethernet" + +msgid "Current status" +msgstr "Текущее состояние" + +msgid "Ethernet" +msgstr "Ethernet" + +msgid "Client: Smartphone (USB tethering)" +msgstr "Клиент: Смартфон (USB-соединение)" + +msgid "Smartphone" +msgstr "Смартфон" + +msgid "WiFi" +msgstr "WiFi" + +msgid "Repeater" +msgstr "Ретранслятор" + +msgid "Tethering" +msgstr "Тетеринг" + +msgid "Cellular" +msgstr "Сотовая связь" + +msgid "AP" +msgstr "AP" + +msgid "Bridged" +msgstr "Мостовая" + +msgid "Adblock" +msgstr "Adblock" + +msgid "VPN" +msgstr "VPN" + +msgid "Netmask" +msgstr "Маска подсети" + +msgid "5G" +msgstr "5G" + +msgid "2.4G" +msgstr "2.4G" + +msgid "%d WLAN %s" +msgstr "%d WLAN %s" + +msgid "client" +msgid_plural "clients" +msgstr[0] "клиент" +msgstr[1] "клиенты" +msgstr[2] "клиенты" +msgstr[3] "клиенты" + +msgid "Mobile Data Client" +msgstr "Мобильный клиент данных" + +msgid "Mobile Data" +msgstr "Мобильные данные" + +msgid "No information available" +msgstr "Информация отсутствует" + +msgid "Interface name invalid" +msgstr "Неверное имя интерфейса" + +msgid "Required exec function is disabled. Check if exec is not added to php disable_functions." +msgstr "Необходимая функция exec отключена. Проверьте, не добавлена ли функция exec в php disable_functions." + +msgid "Waiting for the interface to start ..." +msgstr "Ожидание запуска интерфейса ..." + +msgid "Stop the Interface" +msgstr "Остановите интерфейс" + +msgid "Connection mode" +msgstr "Режим подключения" + +msgid "Signal quality" +msgstr "Качество сигнала" + +msgid "WAN IP" +msgstr "WAN IP" + +msgid "Signal strength" +msgstr "Сила сигнала" + +msgid "No Client device or not yet configured" +msgstr "Нет клиентского устройства или оно еще не настроено" + +msgid "No Client device found" +msgstr "Клиентское устройство не найдено" + +#: includes/footer.php +msgid "Created by the %s" +msgstr "Создано %s" + +msgid "RaspAP Team" +msgstr "Команда RaspAP" + +msgid "Get Insiders" +msgstr "Получить инсайдеров" + +msgid "Thanks for being an Insider" +msgstr "Спасибо, что стали инсайдером" + #: includes/dhcp.php msgid "DHCP server settings" msgstr "Настройки сервера DHCP" +msgid "Default gateway" +msgstr "Шлюз по умолчанию" + +msgid "Install a default route for this interface" +msgstr "Установите маршрут по умолчанию для этого интерфейса" + +msgid "Static IP options" +msgstr "Параметры статического IP-адреса" + +msgid "DHCP options" +msgstr "Параметры DHCP" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "Включите эту опцию, если вы хотите, чтобы RaspAP назначал IP-адреса клиентам на выбранном интерфейсе. Для этой опции требуется статический IP-адрес." + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "Включите этот параметр, только если вы хотите, чтобы устройство использовало этот интерфейс в качестве основного маршрута в Интернет." + msgid "Client list" msgstr "Список клиентов" msgid "Interface" msgstr "Интерфейс" +msgid "Enable DHCP for this interface" +msgstr "Включить DHCP для этого интерфейса" + +msgid "Enable this option if you want RaspAP to assign IP addresses on the selected interface." +msgstr "Отметьте этот флажок, если хотите, чтобы RaspAP назначал IP адреса на выбранном интерфейсе." + msgid "DNS Server" msgstr "DNS сервер" @@ -281,6 +507,9 @@ msgstr "Время окончания" msgid "MAC Address" msgstr "MAC-адрес" +msgid "Optional comment" +msgstr "Необязательный комментарий" + msgid "Host name" msgstr "Имя хоста" @@ -324,31 +553,103 @@ msgid "Dnsmasq is not running" msgstr "Dnsmasq не запущена" msgid "Upstream DNS servers" -msgstr "" +msgstr "Пользовательские DNS-серверы" msgid "Only ever query DNS servers configured below" -msgstr "" +msgstr "Использовать только DNS-серверы, настроенные ниже" msgid "Enable this option if you want RaspAP to send DNS queries to the servers configured below exclusively. By default RaspAP also uses its upstream DHCP server's name servers." -msgstr "" +msgstr "Включите эту опцию, если вы хотите, чтобы RaspAP отправлял DNS-запросы только на серверы, настроенные ниже. По умолчанию RaspAP также использует восходящие DNS-серверы, назначенные через DHCP." msgid "This option adds no-resolv to the dnsmasq configuration." -msgstr "" +msgstr "Этот параметр добавляет no-resolv в конфигурацию dnsmasq." msgid "Add upstream DNS server" -msgstr "" +msgstr "Добавить сервер DNS" msgid "Format" -msgstr "" +msgstr "Формат" msgid "Choose a hosted server" -msgstr "" +msgstr "Общедоступный DNS-сервер" + +msgid "Enable these options to log dhcpcd and dnsmasq activity." +msgstr "Включите эти опции для регистрации активности dhcpcd и dnsmasq." msgid "Log DHCP requests" -msgstr "" +msgstr "Журнал DHCP-запросов" msgid "Log DNS queries" -msgstr "" +msgstr "Журнал DNS-запросов" + +msgid "Restrict access" +msgstr "Запретить доступ" + +msgid "Limit network access to static clients" +msgstr "Ограничить доступ к сети статическим клиентам" + +msgid "Enable this option if you want RaspAP to ignore any clients which are not specified in the static leases list." +msgstr "Включите эту опцию, если вы хотите, чтобы RaspAP игнорировал любых клиентов, которые не указаны в списке статических аренд." + +msgid "This option adds dhcp-ignore to the dnsmasq configuration." +msgstr "Эта опция добавляет dhcp-ignore в конфигурацию dnsmasq." + +msgid "Clients with a particular hardware MAC address can always be allocated the same IP address." +msgstr "Клиенты с определенным MAC-адресом могут всегда получать одиин и тот же IP-адрес." + +msgid "This option adds dhcp-host entries to the dnsmasq configuration." +msgstr "Эта опция добавляет dhcp-host в конфигурацию dnsmasq." + +msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." +msgstr "Отключает опцию шлюза/ногатевея для этого интерфейса в файле dhcpcd.conf." + +msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." +msgstr "Отключает опцию nohook wpa_supplicant для этого интерфейса в файле dhcpcd.conf." + +msgid "Disable wpa_supplicant dhcp hook for this interface" +msgstr "Отключить wpa_supplicant dhcp для этого интерфейса" + +msgid "If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook." +msgstr "Если вы управляете беспроводными соединениями с помощью самого wpa_supplicant, крючок может создавать нежелательные события подключения. Эта опция отключает хук." + +msgid "Please provide a valid IP Address." +msgstr "Укажите действительный IP-адрес." + +msgid "Please provide a valid Default gateway." +msgstr "Укажите действительный шлюз по умолчанию." + +msgid "Please provide a valid Starting IP Address." +msgstr "Укажите действительный начальный IP-адрес." + +msgid "Please provide a valid Ending IP Address." +msgstr "Укажите действительный конечный IP-адрес." + +msgid "Please provide a valid Lease Time." +msgstr "Укажите действительное время аренды." + +msgid "Invalid interface name." +msgstr "Недопустимое имя интерфейса." + +msgid "Invalid static IP address." +msgstr "Неверный статический IP-адрес." + +msgid "Invalid default gateway." +msgstr "Неверный шлюз по умолчанию." + +msgid "Invalid DHCP range start." +msgstr "Неверное начало диапазона DHCP." + +msgid "Invalid DHCP range end." +msgstr "Недопустимый конец диапазона DHCP." + +msgid "Invalid DHCP lease time, not a number." +msgstr "Неверное время аренды DHCP, не число." + +msgid "Unknown DHCP lease time unit." +msgstr "Неизвестная единица времени аренды DHCP." + +msgid "Invalid metric value, not a number." +msgstr "Неверное значение метрики, не число." #: includes/hostapd.php msgid "Basic" @@ -372,8 +673,8 @@ msgstr "Стандарт безопасности" msgid "Encryption Type" msgstr "Тип шифрования" -msgid "PSK" -msgstr "" +msgid "Pre-shared key (PSK)" +msgstr "Предварительный ключ (PSK)" msgid "Advanced settings" msgstr "Расширенные настройки" @@ -408,11 +709,26 @@ msgstr "Неизвестный интерфейс" msgid "Country code must be blank or two characters" msgstr "Код страны должен быть пустым или двухсимвольным" -msgid "Wifi Hotspot settings saved" -msgstr "Настройки Wifi-точки сохранены" +msgid "DHCP configuration for %s enabled." +msgstr "Настройка DHCP для %s включена." -msgid "Unable to save wifi hotspot settings" -msgstr "Невозможно сохранить настройки wifi-точки" +msgid "DHCP configuration for %s added." +msgstr "Добавлена настройка DHCP для %s ." + +msgid "DHCP configuration for %s updated." +msgstr "Обновлена конфигурация DHCP для %s ." + +msgid "Interface %s has no default settings." +msgstr "Интерфейс %s не имеет настроек по умолчанию." + +msgid "Configure settings in DHCP Server before starting AP." +msgstr "Настройте параметры DHCP-сервера перед запуском точки доступа." + +msgid "Wifi hotspot settings saved." +msgstr "Настройки точки доступа Wifi сохраняются." + +msgid "Unable to save WiFi hotspot settings." +msgstr "Невозможно сохранить настройки точки доступа WiFi." msgid "Start hotspot" msgstr "Запуск точки доступа" @@ -429,11 +745,38 @@ msgstr "Включить журналирование" msgid "Logfile output" msgstr "Записи журнала" +msgid "Log level" +msgstr "Уровень журнала" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "Более высокие уровни уменьшают многословность журнала. Рекомендуется информационный." + +msgid "Verbose debugging" +msgstr "Подробная отладка" + +msgid "Debugging" +msgstr "Отладка" + +msgid "Informational" +msgstr "Информация" + +msgid "Notification" +msgstr "Уведомление" + +msgid "Warning" +msgstr "Внимание" + msgid "WiFi client AP mode" msgstr "Режим AP WiFi-клиента" msgid "Bridged AP mode" -msgstr "" +msgstr "Режим моста ТОЧКИ ДОСТУПА" + +msgid "WiFi repeater mode" +msgstr "Режим ретранслятора WiFi" + +msgid "Dual band AP mode" +msgstr "Режим двухдиапазонной точки доступа" msgid "Hide SSID in broadcast" msgstr "Скрыть SSID при трансляции" @@ -441,13 +784,178 @@ msgstr "Скрыть SSID при трансляции" msgid "Maximum number of clients" msgstr "Максимальное количество клиентов" -msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." -msgstr "Настраивает параметр max_num_sta в hostapd. По умолчанию и максимум — 2007. Если пусто или 0, применяется значение по умолчанию." +msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." +msgstr "Настраивает параметр max_num_sta в hostapd. По умолчанию максимальное значение - 2007. Если значение пустое или равно 0, применяется значение по умолчанию." + +msgid "Beacon interval" +msgstr "Интервал маяка" + +msgid "Disable disassoc_low_ack" +msgstr "Отключить disassoc_low_ack" + +msgid "Do not disassociate stations based on excessive transmission failures." +msgstr "Не разъединяйте станции на основе чрезмерного количества отказов передачи." + +msgid "Executing RaspAP service start" +msgstr "Выполнение запуска службы RaspAP" + +msgid "Close" +msgstr "Закрыть" + +msgid "Enable this option to log hostapd activity." +msgstr "Включите эту опцию для регистрации активности hostapd." + +msgid "Transmit power (dBm)" +msgstr "Мощность передачи (дБм)" + +msgid "Sets the txpower option for the AP interface and the configured country." +msgstr "Устанавливает параметр txpower для интерфейса точки доступа и настроенной страны." + +msgid "dBm is a unit of level used to indicate that a power ratio is expressed in decibels (dB) with reference to one milliwatt (mW). 30 dBm is equal to 1000 mW, while 0 dBm equals 1.25 mW." +msgstr "ДБм - это единица измерения уровня, используемая для обозначения отношения мощности в децибелах (дБ) к одному милливатту (мВт). 30 дБм равны 1000 мВт, а 0 дБм - 1,25 мВт." + +msgid "WPA and WPA2" +msgstr "WPA и WPA2" + +msgid "WPA2 and WPA3-Personal (transitional mode)" +msgstr "WPA2 и WPA3-Personal (переходный режим)" + +msgid "WPA3-Personal (required)" +msgstr "WPA3-Personal (требуется)" + +msgid "Enabled (for supported clients)" +msgstr "Включено (для поддерживаемых клиентов)" + +msgid "Required (for supported clients)" +msgstr "Требуется (для поддерживаемых клиентов)" + +msgid "802.11w extends strong cryptographic protection to a select set of robust management frames, including Deauthentication, Disassociation and certain categories of Action Management frames. Collectively, this is known as Management Frame Protection (MFP)." +msgstr "Стандарт 802.11w распространяет надежную криптографическую защиту на определенный набор надежных кадров управления, включая кадры деаутентификации, дезассоциации и некоторые категории кадров управления действиями. Все вместе это известно как защита кадров управления (MFP)." + +msgid "Scan this QR code directly or %s %sprint a sign%s for your users." +msgstr "Сканируйте этот QR-код напрямую или %s %sраспечатайте табличку%s для ваших пользователей." + +msgid "Printable Wi-Fi sign" +msgstr "Печатный знак Wi-Fi" + +msgid "To connect with your phone or tablet, scan the QR code above with your camera app." +msgstr "Чтобы подключиться с помощью телефона или планшета, отсканируйте QR-код выше с помощью приложения для камеры." + +msgid "For other devices, use the login credentials below." +msgstr "Для других устройств используйте указанные ниже учетные данные." + +msgid "Network" +msgstr "Сеть" + +msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only." +msgstr "Выбранный интерфейс (%s) поддерживает только беспроводной диапазон 2,4 ГГц." + +msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only." +msgstr "Выбранный интерфейс (%s) поддерживает только беспроводной диапазон 2,5 ГГц." + +msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands." +msgstr "Выбранный интерфейс (%s) поддерживает беспроводные диапазоны 2,4 и 5 ГГц." + +msgid "The selected interface (%s) does not support wireless mode operation." +msgstr "Выбранный интерфейс (%s) не поддерживает работу в беспроводном режиме." + +msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set." +msgstr "Опция 802.11ac 5 ГГц отключена до тех пор, пока не будет установлен совместимый домен регулирования беспроводной связи." + +msgid "WiFi repeater mode: A metric value is already defined for DHCP." +msgstr "Режим ретранслятора WiFi: Значение метрики уже определено для DHCP." + +msgid "Restart hotspot to enable WiFi repeater mode." +msgstr "Перезапустите точку доступа, чтобы включить режим ретранслятора WiFi." + +msgid "Unable to obtain metric value for client interface. Repeater mode inactive." +msgstr "Невозможно получить значение метрики для клиентского интерфейса. Режим повторителя неактивен." + +msgid "Metric value configured for the %s interface." +msgstr "Значение метрики, настроенное для интерфейса %s ." + +msgid "Parameter hiddenSSID contains invalid configuration value." +msgstr "Параметр hiddenSSID содержит недопустимое значение конфигурации." + +msgid "Parameter hiddenSSID is not a number." +msgstr "Параметр hiddenSSID не является числом." + +msgid "Bridge interface configuration" +msgstr "Конфигурация интерфейса моста" + +msgid "Configure a static IP address for the br0 interface to maintain connectivity during bridge mode activation." +msgstr "Настройте статический IP-адрес для интерфейса br0, чтобы поддерживать связь во время активации режима моста." + +msgid "Static IP Address" +msgstr "Статический IP-адрес" + +msgid "Netmask / CIDR" +msgstr "Маска сети / CIDR" + +msgid "Example: 192.168.1.100" +msgstr "Пример: 192.168.1.100" + +msgid "CIDR notation (e.g., 24 for 255.255.255.0)" +msgstr "Нотация CIDR (например, 24 для 255.255.255.0)" + +msgid "Gateway" +msgstr "Шлюз" + +msgid "Your router's IP address" +msgstr "IP-адрес вашего маршрутизатора" + +msgid "Usually same as gateway" +msgstr "Обычно такой же, как шлюз" + +msgid "Bridge static IP address must be a valid IPv4 address" +msgstr "Статический IP-адрес моста должен быть действительным адресом IPv4." + +msgid "Bridge netmask must be a number between 1 and 32" +msgstr "Сетевая маска моста должна быть числом от 1 до 32" + +msgid "Bridge netmask is required when using static IP" +msgstr "При использовании статического IP требуется сетевая маска моста." + +msgid "Bridge gateway must be a valid IPv4 address" +msgstr "Шлюз моста должен быть действительным адресом IPv4" + +msgid "Bridge gateway is required when using static IP" +msgstr "Мостовой шлюз необходим при использовании статического IP" + +msgid "Bridge DNS server must be a valid IPv4 address" +msgstr "DNS-сервер моста должен быть действительным адресом IPv4" + +msgid "Bridge DNS server is required when using static IP" +msgstr "Мостовой DNS-сервер необходим при использовании статического IP" + +msgid "Bridge static IP and gateway must be in the same subnet" +msgstr "Статический IP-адрес моста и шлюз должны находиться в одной подсети" + +msgid "Please enter a valid IPv4 address" +msgstr "Введите действительный IPv4-адрес" + +msgid "Please enter a valid netmask" +msgstr "Пожалуйста, введите действительную сетевую маску" + +msgid "DHCP configuration for br0 enabled" +msgstr "Конфигурация DHCP для br0 включена" + +msgid "Unable to save WiFi hotspot settings due to validation errors" +msgstr "Невозможно сохранить настройки точки доступа WiFi из-за ошибок проверки" + +msgid "Enable AP isolation" +msgstr "Включить изоляцию точки доступа" + +msgid "Blocks wireless clients from seeing or connecting to each other. Recommended for guest networks and public access points." +msgstr "Блокирует возможность беспроводных клиентов видеть друг друга или подключаться к ним. Рекомендуется для гостевых сетей и публичных точек доступа." #: includes/networking.php msgid "Summary" msgstr "Сводка" +msgid "Internet connection" +msgstr "Подключение к Интернету" + msgid "Current settings" msgstr "Текущие настройки" @@ -460,8 +968,11 @@ msgstr "Альтернативный DNS-сервер" msgid "Adapter IP Address Settings" msgstr "Настройки IP-адреса адаптера" -msgid "Enable Fallback to Static Option" -msgstr "Включить опцию статического резервирования IP" +msgid "Enable fallback to static option" +msgstr "Включить возврат к статическим параметрам" + +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "Включите эту опцию, чтобы настроить статический профиль и вернуться к нему, когда аренда DHCP не удастся." msgid "Static IP" msgstr "Статический IP" @@ -475,12 +986,165 @@ msgstr "Отключено" msgid "Static IP Options" msgstr "Настройки статического IP" +msgid "Metric" +msgstr "Метрика" + msgid "Apply settings" msgstr "Применить настройки" msgid "Information provided by /sys/class/net" msgstr "Информация получена от /sys/class/net" +msgid "Devices" +msgstr "Устройства" + +msgid "Diagnostics" +msgstr "Диагностика" + +msgid "Network devices" +msgstr "Сетевые устройства" + +msgid "Device" +msgstr "Устройство" + +msgid "MAC address" +msgstr "MAC-адрес" + +msgid "USB vid/pid" +msgstr "USB vid/pid" + +msgid "Device type" +msgstr "Тип устройства" + +msgid "Fixed name" +msgstr "Исправленное имя" + +msgid "Change" +msgstr "Изменить" + +msgid "Mobile data settings" +msgstr "Настройки мобильных данных" + +msgid "SIM card PIN number" +msgstr "PIN-код SIM-карты" + +msgid "APN Settings (Modem device ppp0)" +msgstr "Настройки APN (модемное устройство ppp0)" + +msgid "Access Point Name (APN)" +msgstr "Имя точки доступа (APN)" + +msgid "Password" +msgstr "Пароль" + +msgid "Successfully Updated Network Configuration" +msgstr "Успешное обновление конфигурации сети" + +msgid "Error saving network configuration to file" +msgstr "Ошибка при сохранении сетевой конфигурации в файл" + +msgid "Unable to detect interface" +msgstr "Невозможно обнаружить интерфейс" + +msgid "Routing table" +msgstr "Таблица маршрутизации" + +msgid "raw output" +msgstr "необработанный выход" + +msgid "Setting wireless regulatory domain to %s" +msgstr "Установка домена регулирования беспроводной связи на %s" + +msgid "Please provide a valid SSID." +msgstr "Укажите действительный идентификатор SSID." + +msgid "Please provide a valid PSK." +msgstr "Укажите действительный PSK." + +msgid "Speedtest" +msgstr "Speedtest" + +msgid "Selecting a server" +msgstr "Выбор сервера" + +msgid "Privacy" +msgstr "Конфиденциальность" + +msgid "Server" +msgstr "Сервер" + +msgid "ms" +msgstr "мс" + +msgid "Mbps" +msgstr "Мбит/с" + +msgid "Ping" +msgstr "Пинг" + +msgid "Jitter" +msgstr "Джиттер" + +msgid "Upload" +msgstr "Загрузить" + +msgid "Start" +msgstr "Начало" + +msgid "Abort" +msgstr "Прервать" + +msgid "Wireless LAN routing" +msgstr "Маршрутизация беспроводных локальных сетей" + +msgid "Stop WLAN routing" +msgstr "Остановить маршрутизацию WLAN" + +msgid "Start WLAN routing" +msgstr "Запуск маршрутизации WLAN" + +msgid "Restart WLAN routing" +msgstr "Перезапуск маршрутизации WLAN" + +msgid "This option configures RaspAP to route network traffic from your wireless client (STA) interface to another available interface." +msgstr "Эта опция настраивает RaspAP на маршрутизацию сетевого трафика с интерфейса беспроводного клиента (STA) на другой доступный интерфейс." + +msgid "When an output interface is selected, iptables rules are added to route packets using network address translation (NAT). This is often done to share internet connectivity from a WLAN with devices on an eth0, usb0 or predictable enx interface." +msgstr "Когда выбран выходной интерфейс, добавляются правила iptables для маршрутизации пакетов с использованием трансляции сетевых адресов (NAT). Это часто делается для совместного использования интернет-подключения из WLAN с устройствами на интерфейсах eth0, usb0 или предсказуемом enx." + +msgid "Wireless client interface" +msgstr "Интерфейс беспроводного клиента" + +msgid "Output interface" +msgstr "Выходной интерфейс" + +msgid "Configure a static IP address and DHCP for output interface" +msgstr "Настройка статического IP-адреса и DHCP для выходного интерфейса" + +msgid "Attempting to enable routing between %s and %s interfaces" +msgstr "Попытка включить маршрутизацию между интерфейсами %s и %s ." + +msgid "Attempting to disable routing between %s and %s interfaces" +msgstr "Попытка отключить маршрутизацию между интерфейсами %s и %s ." + +msgid "No default DHCP configuration exists for the %s interface" +msgstr "Для интерфейса %s не существует конфигурации DHCP по умолчанию." + +msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" +msgstr "Настройте статический IP и DHCP для этого интерфейса в настройках DHCP Server." + +msgid "WLAN routing configuration saved" +msgstr "Сохранение конфигурации маршрутизации WLAN" + +msgid "Unable to save WLAN routing configuration" +msgstr "Невозможно сохранить конфигурацию маршрутизации WLAN" + +msgid "Successfully restarted dnsmasq" +msgstr "Успешный перезапуск dnsmasq" + +msgid "Failed to restart dnsmasq" +msgstr "Не удалось перезапустить dnsmasq" + #: includes/system.php msgid "System Information" msgstr "Информация о системе" @@ -509,31 +1173,234 @@ msgstr "Пересмотр Pi" msgid "Uptime" msgstr "Время работы" +msgid "System Time" +msgstr "Системное время" + msgid "Memory Used" msgstr "Использовано памяти" +msgid "Storage Used" +msgstr "Используемое хранилище" + msgid "CPU Load" msgstr "Нагрузка CPU" +msgid "CPU Temp" +msgstr "Температура процессора" + msgid "Reboot" msgstr "Перезапуск" msgid "Shutdown" msgstr "Выключить" +msgid "System reboot" +msgstr "Перезагрузка системы" + +msgid "System shutdown" +msgstr "Выключение системы" + +msgid "Reboot now? The system will be temporarily unavailable." +msgstr "Перезагрузиться сейчас? Система будет временно недоступна." + +msgid "Shutdown now? The system will be unavailable." +msgstr "Выключить сейчас? Система будет недоступна." + msgid "System Rebooting Now!" msgstr "Система перезапускается!" msgid "System Shutting Down Now!" msgstr "Система выключается!" -#: includes/themes.php +msgid "Web server port" +msgstr "Порт веб-сервера" + +msgid "Web server bind address" +msgstr "Адрес привязки веб-сервера" + +msgid "OS" +msgstr "OS" + +msgid "Kernel" +msgstr "Ядро" + +msgid "System reset" +msgstr "Сброс системы" + +msgid "Reset RaspAP to its initial configuration? This action cannot be undone." +msgstr "Сбросить RaspAP к начальной конфигурации? Это действие нельзя отменить." + +msgid "Reset complete. Restart the hotspot for the changes to take effect." +msgstr "Сброс настроек завершен. Перезапустите точку доступа, чтобы изменения вступили в силу." + +msgid "System reset in progress..." +msgstr "Идет сброс системы..." + +msgid "Reset" +msgstr "Сброс" + +msgid "Restore settings" +msgstr "Восстановление настроек" + +msgid "To reset RaspAP to its initial configuration, click or tap the button below." +msgstr "Чтобы вернуть RaspAP к исходной конфигурации, нажмите или коснитесь кнопки ниже." + +msgid "Custom files for optional components such as Ad Blocking, WireGuard or OpenVPN will remain on the system." +msgstr "Пользовательские файлы для дополнительных компонентов, таких как блокировка рекламы, WireGuard или OpenVPN, останутся в системе." + +msgid "Perform reset" +msgstr "Выполните сброс" + +msgid "Restores all access point (AP) service settings to their default values. This applies to hostapd, dhcpcd and dnsmasq." +msgstr "Восстанавливает все настройки служб точки доступа (AP) до значений по умолчанию. Это относится к hostapd, dhcpcd и dnsmasq." + msgid "Theme settings" msgstr "Настройки темы" msgid "Select a theme" msgstr "Выбор темы" +msgid "Color" +msgstr "Цвет" + +msgid "Enable this option for resizable, drag and drop widgets. Best for large displays." +msgstr "Включите эту опцию для виджетов с изменяемыми размерами и возможностью перетаскивания. Лучше всего подходит для больших дисплеев." + +msgid "Dynamic widgets" +msgstr "Динамические виджеты" + +msgid "Tools" +msgstr "Инструменты" + +msgid "System tools" +msgstr "Системные инструменты" + +msgid "To generate a system debug log, click or tap the button below." +msgstr "Чтобы создать журнал отладки системы, нажмите или коснитесь кнопки ниже." + +msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." +msgstr "Информация отладочного журнала содержит версию RaspAP, текущее состояние и конфигурацию служб, связанных с AP, установленные системные пакеты, версию ядра Linux и сетевые данные. Никаких паролей или других конфиденциальных данных не содержится." + +msgid "Generate debug log" +msgstr "Создание журнала отладки" + +msgid "Debug log generation in progress..." +msgstr "Идет генерация журнала отладки..." + +msgid "Diagnostic log size limit (KB)" +msgstr "Ограничение размера журнала диагностики (КБ)" + +msgid "Changing log limit size to %s KB" +msgstr "Изменение предельного размера журнала на %s КБ" + +msgid "Information provided by raspap.sysinfo" +msgstr "Информация предоставлена raspap.sysinfo" + +msgid "The following user plugins are available to extend RaspAP's functionality." +msgstr "Для расширения функциональности RaspAP доступны следующие пользовательские плагины." + +msgid "Choose Details for more information and to install a plugin." +msgstr "Выберите \"Подробности\", чтобы получить дополнительную информацию и установить плагин." + +msgid "Network error" +msgstr "Ошибка сети" + +msgid "Unable to load plugins" +msgstr "Невозможно загрузить плагины" + +msgid "Reload" +msgstr "Перезагрузка" + +msgid "and try again" +msgstr "и попробуйте еще раз" + +msgid "Plugins" +msgstr "Плагины" + +msgid "Plugin details" +msgstr "Детали плагина" + +msgid "Name" +msgstr "Имя" + +msgid "Version" +msgstr "Версия" + +msgid "Description" +msgstr "Описание" + +msgid "Plugin source" +msgstr "Источник плагина" + +msgid "Author" +msgstr "Автор" + +msgid "License" +msgstr "Лицензия" + +msgid "Language locale" +msgstr "Языковая локаль" + +msgid "Configuration files" +msgstr "Конфигурационные файлы" + +msgid "Dependencies" +msgstr "Зависимости" + +msgid "Permissions" +msgstr "Разрешения" + +msgid "Non-privileged users" +msgstr "Непривилегированные пользователи" + +msgid "Install now" +msgstr "Установите сейчас" + +msgid "Installing plugin" +msgstr "Установка плагина" + +msgid "Plugin installation in progress..." +msgstr "Установка плагина продолжается..." + +msgid "Plugin install completed." +msgstr "Установка плагина завершена." + +msgid "Details" +msgstr "Подробности" + +msgid "Installed" +msgstr "Установлено" + +msgid "Alert messages" +msgstr "Предупреждающие сообщения" + +msgid "Alert close timeout (milliseconds)" +msgstr "Таймаут закрытия предупреждения (миллисекунды)" + +msgid "Automatically close alerts after a specified timeout" +msgstr "Автоматическое закрытие оповещений по истечении заданного времени" + +msgid "To inspect adapters attached to this device, click or tap the button below." +msgstr "Чтобы просмотреть адаптеры, подключенные к этому устройству, нажмите или коснитесь кнопки ниже." + +msgid "The adapter inspection tool returns details about external WLAN devices including drivers, supported modes and so on." +msgstr "Инструмент проверки адаптера позволяет получить подробную информацию о внешних устройствах WLAN, включая драйверы, поддерживаемые режимы и т. д." + +msgid "Choose a network interface to inspect" +msgstr "Выберите сетевой интерфейс для проверки" + +msgid "Select an interface..." +msgstr "Выберите интерфейс..." + +msgid "Adapter health check" +msgstr "Проверка работоспособности адаптера" + +msgid "Inspect adapters" +msgstr "Осмотрите адаптеры" + +msgid "Theme" +msgstr "Тема" + #: includes/data_usage.php msgid "Data usage" msgstr "Использование данных" @@ -632,6 +1499,66 @@ msgstr "Попытка запуска openvpn" msgid "Attempting to stop openvpn" msgstr "Попытка остановить openvpn" +msgid "Configurations" +msgstr "Конфигурации" + +msgid "Currently available OpenVPN client configurations are displayed below." +msgstr "Ниже показаны доступные на данный момент конфигурации клиентов OpenVPN." + +msgid "Activating a configuration will restart the openvpn-client service." +msgstr "Активация конфигурации приведет к перезапуску службы openvpn-client." + +msgid "Delete OpenVPN client" +msgstr "Удаление клиента OpenVPN" + +msgid "Delete client configuration? This cannot be undone." +msgstr "Удалить конфигурацию клиента? Это нельзя отменить." + +msgid "Activate OpenVPN client" +msgstr "Активируйте клиент OpenVPN" + +msgid "Activate client configuration? This will restart the openvpn-client service." +msgstr "Активировать конфигурацию клиента? Это перезапустит службу openvpn-client." + +msgid "Activate" +msgstr "Активировать" + +msgid "Cancel" +msgstr "Отменить" + +msgid "Enable this option to log openvpn activity." +msgstr "Включите эту опцию для регистрации активности openvpn." + +msgid "Authentification Method" +msgstr "Метод аутентификации" + +msgid "Username and password" +msgstr "Имя пользователя и пароль" + +msgid "Certificates" +msgstr "Сертификаты" + +msgid "Enter username and password" +msgstr "Введите имя пользователя и пароль" + +msgid "Certificates in the configuration file" +msgstr "Сертификаты в конфигурационном файле" + +msgid "RaspAP supports certificates by including them in the configuration file." +msgstr "RaspAP поддерживает сертификаты путем включения их в конфигурационный файл." + +msgid "Signing certification authority (CA) certificate (e.g. ca.crt): enclosed in <ca> ... </ca> tags." +msgstr "Подписание сертификата центра сертификации (ЦС) (например, ca.crt): заключено в теги <ca> ... </ca> теги." + +msgid "Client certificate (public key) (e.g. client.crt): enclosed in <cert> ... </cert> tags." +msgstr "Сертификат клиента (открытый ключ) (например, client.crt): заключен в теги <cert> ... </cert> тегами." + +msgid "Private key of the client certificate (e.g. client.key): enclosed in <key> ... </key> tags." +msgstr "Закрытый ключ сертификата клиента (например, client.key): заключен в теги <key> ... </key> тегами." + +msgid "Configuration File" +msgstr "Файл конфигурации" + #: includes/torproxy.php msgid "TOR is not running" msgstr "TOR не запущен" @@ -668,7 +1595,7 @@ msgstr "Попытка остановить TOR" #: template/dashboard.php msgid "Bridged AP mode is enabled. For Hostname and IP, see your router's admin page." -msgstr "" +msgstr "Мостовой режим ТОЧКИ ДОСТУПА включен. Для хоста и IP-адреса см. страницу администрирования маршрутизатора." #: common form controls msgid "Save settings" @@ -692,45 +1619,1122 @@ msgstr "вверх" msgid "down" msgstr "вниз" +msgid "Clear log" +msgstr "Очистить журнал" + msgid "adblock" -msgstr "" +msgstr "Adblock" msgid "Ad Blocking" -msgstr "" +msgstr "Ad Blocking" msgid "Start Ad Blocking" -msgstr "" +msgstr "Запустить Ad Blocking" msgid "Restart Ad Blocking" -msgstr "" +msgstr "Перезапустить Ad Blocking" msgid "Blocklist settings" -msgstr "" +msgstr "Настройки блокировки" msgid "Enable blocklists" -msgstr "" +msgstr "Включить блокировку" msgid "Enable this option if you want RaspAP to block DNS requests for ads, tracking and other virtual garbage. Blocklists are gathered from multiple, actively maintained sources and automatically updated, cleaned, optimized and moderated on a daily basis." -msgstr "" +msgstr "Включите эту опцию, если вы хотите, чтобы RaspAP блокировал DNS запросы для рекламы, отслеживания и другого виртуального мусора. Блокирующие списки собираются из множества активно поддерживаемых источников и автоматически обновляются, очищаются, оптимизируются и модерируются ежедневно." msgid "This option adds conf-file and addn-hosts to the dnsmasq configuration." -msgstr "" +msgstr "Эта опция добавляет в конфигурацию dnsmasq conf-file и addn-hosts." msgid "Choose a blocklist provider" -msgstr "" +msgstr "Выберите поставщика черного списка" msgid "Hostnames blocklist last updated" -msgstr "" +msgstr "Имена черного списка последнее обновление" msgid "Domains blocklist last updated" -msgstr "" +msgstr "Последнее обновление списка блокировки доменов" msgid "Update now" -msgstr "" +msgstr "Обновить сейчас" msgid "Statistics" -msgstr "" +msgstr "Статистика" msgid "Information provided by adblock" -msgstr "" +msgstr "Информация получена от Adblock" + +msgid "Enable custom blocklist" +msgstr "Включить пользовательский список блоков" + +msgid "Define custom hosts to be blocked by entering an IPv4 or IPv6 address followed by any whitespace (spaces or tabs) and the host name." +msgstr "Определите пользовательские узлы для блокировки, введя IPv4- или IPv6-адрес, за которым следуют пробелы (пробелы или табуляции) и имя узла." + +msgid "IPv4 example: 0.0.0.0 badhost.com" +msgstr "Пример IPv4: 0.0.0.0 badhost.com" + +msgid "This option adds an addn-hosts directive to the dnsmasq configuration." +msgstr "Эта опция добавляет директиву addn-hosts в конфигурацию dnsmasq." + +msgid "Custom blocklist not defined" +msgstr "Пользовательский список блоков не определен" + +msgid "Invalid custom IP address found on line " +msgstr "В строке найден недопустимый пользовательский IP-адрес " + +msgid "Invalid custom host found on line " +msgstr "В строке найден недопустимый пользовательский хост " + +msgid "Tunnel settings" +msgstr "Настройки туннеля" + +msgid "Configuration Method" +msgstr "Метод конфигурации" + +msgid "Upload file" +msgstr "Загрузить файл" + +msgid "Create manually" +msgstr "Создать вручную" + +msgid "Upload a WireGuard config" +msgstr "Загрузка конфигурации WireGuard" + +msgid "This option uploads and installs an existing WireGuard .conf file on this device." +msgstr "Эта опция загружает и устанавливает существующий файл WireGuard .conf на данном устройстве ." + +msgid "Apply iptables rules to the selected interface" +msgstr "Применить правила iptables к выбранному интерфейсу" + +msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on a desired interface. The active AP interface is the default." +msgstr "Рекомендуется, если вы хотите перенаправить сетевой трафик с интерфейса wg0 на клиентов, подключенных к нужному интерфейсу. По умолчанию используется активный интерфейс точки доступа." + +msgid "This option adds iptables Postup and PostDown rules for the interface selected below." +msgstr "Эта опция добавляет правила iptables Postup и PostDown для выбранного ниже интерфейса." + +msgid "Select WireGuard configuration file (.conf)" +msgstr "Выберите файл конфигурации WireGuard (.conf)." + +msgid "Create a local WireGuard config" +msgstr "Создайте локальную конфигурацию WireGuard" + +msgid "Enable server" +msgstr "Включить сервер" + +msgid "Enable this option to secure network traffic by creating an encrypted tunnel between RaspAP and configured peers." +msgstr "Включите эту опцию для защиты сетевого трафика путем создания зашифрованного туннеля между RaspAP и настроенными аналогами." + +msgid "This setting generates a new WireGuard .conf file on this device." +msgstr "Этот параметр создает новый файл WireGuard .conf на этом устройстве ." + +msgid "Local public key" +msgstr "Локальный открытый ключ" + +msgid "Local Port" +msgstr "Местный порт" + +msgid "IP Address" +msgstr "IP-адрес" + +msgid "DNS" +msgstr "DNS" + +msgid "Peer" +msgstr "Сверстник" + +msgid "Enable peer" +msgstr "Включить одноранговую сеть" + +msgid "Enable this option to encrypt traffic by creating a tunnel between RaspAP and this peer." +msgstr "Включите эту опцию для шифрования трафика путем создания туннеля между RaspAP и этим аналогом." + +msgid "This option adds client.conf to the WireGuard configuration." +msgstr "Эта опция добавляет файл client.conf в конфигурацию WireGuard." + +msgid "Peer public key" +msgstr "Открытый ключ коллеги" + +msgid "Endpoint address" +msgstr "Адрес конечной точки" + +msgid "Allowed IPs" +msgstr "Разрешенные IP-адреса" + +msgid "Persistent keepalive" +msgstr "Постоянное обновление" + +msgid "Enable this option to display an updated wg-quick debug log." +msgstr "Включите эту опцию, чтобы отобразить обновленный журнал отладки wg-quick." + +msgid "WireGuard debug log updated" +msgstr "Обновлен журнал отладки WireGuard" + +msgid "Scan this QR code with your client to connect to this tunnel" +msgstr "Отсканируйте этот QR-код с помощью вашего клиента, чтобы подключиться к этому туннелю" + +msgid "or download the client.conf file to your device." +msgstr "или загрузите файл client.conf на ваше устройство." + +msgid "Download" +msgstr "Скачать" + +msgid "Start WireGuard" +msgstr "Запустите WireGuard" + +msgid "Stop WireGuard" +msgstr "Остановка WireGuard" + +msgid "Information provided by wireguard" +msgstr "Информация предоставлена компанией wireguard" + +msgid "Attempting to start WireGuard" +msgstr "Попытка запуска WireGuard" + +msgid "Attempting to stop WireGuard" +msgstr "Попытка остановить WireGuard" + +msgid "WireGuard configuration updated successfully" +msgstr "Конфигурация WireGuard успешно обновлена" + +msgid "WireGuard configuration failed to be updated" +msgstr "Не удалось обновить конфигурацию WireGuard" + +msgid "Enable kill switch" +msgstr "Включить аварийный выключатель" + +msgid "This option adds iptables PostUp and PreDown rules for the configured interface." +msgstr "Эта опция добавляет правила iptables PostUp и PreDown для настроенного интерфейса." + +msgid "Recommended if you wish to prevent the flow of unencrypted packets through non-WireGuard interfaces." +msgstr "Рекомендуется, если вы хотите предотвратить поток незашифрованных пакетов через интерфейсы, не относящиеся к WireGuard." + +msgid "iptables rules added to WireGuard configuration" +msgstr "Правила iptables добавлены в конфигурацию WireGuard" + +msgid "Existing iptables rules found in WireGuard configuration - not added" +msgstr "Существующие правила iptables, найденные в конфигурации WireGuard, не добавляются" + +msgid "Currently available WireGuard file configurations are displayed below." +msgstr "Ниже показаны доступные на данный момент конфигурации файлов WireGuard." + +msgid "Activating a configuration will restart the wg-quick service." +msgstr "Активация конфигурации приведет к перезапуску службы wg-quick." + +msgid "Client Firewall" +msgstr "Брандмауэр клиента" + +msgid "Firewall is ENABLED" +msgstr "Брандмауэр включен" + +msgid "Firewall is OFF" +msgstr "Брандмауэр выключен" + +msgid "The default firewall will only allow outgoing and already established traffic." +msgstr "Брандмауэр по умолчанию разрешает только исходящий и уже установленный трафик." + +msgid "No incoming UDP traffic is allowed." +msgstr "Входящий UDP-трафик запрещен." + +msgid "There are no restrictions for the access point %s." +msgstr "Для точки доступа нет никаких ограничений %s." + +msgid "Exception: Service" +msgstr "Исключение: Сервис" + +msgid "allow SSH access on port 22" +msgstr "разрешить доступ по SSH через порт 22" + +msgid "allow access to the RaspAP GUI on port 80 or 443" +msgstr "разрешить доступ к графическому интерфейсу RaspAP на порту 80 или 443" + +msgid "Allow incoming connections for some services from the internet side." +msgstr "Разрешите входящие соединения для некоторых служб со стороны Интернета." + +msgid "Exception: network device" +msgstr "Исключение: сетевое устройство" + +msgid "Exclude device(s)" +msgstr "Исключить устройство (устройства)" + +msgid "Exclude the given network device(s) (separated by a blank or comma) from firewall rules." +msgstr "Исключите указанное сетевое устройство (устройства) (разделенные пробелом или запятой) из правил брандмауэра." + +msgid "Current client devices: %s" +msgstr "Текущие клиентские устройства: %s" + +msgid "The access point %s is per default excluded." +msgstr "Точка доступа %s по умолчанию исключена." + +msgid "Exception: IP-Address" +msgstr "Исключение: IP-адрес" + +msgid "Allow incoming connections from" +msgstr "Разрешить входящие соединения из" + +msgid "For the given IP-addresses (separated by a blank or comma) the incoming connection (via TCP and UDP) is accepted." +msgstr "Для заданных IP-адресов (разделенных пробелом или запятой) принимается входящее соединение (по TCP и UDP)." + +msgid "This is required for an OpenVPN via UDP or Wireguard connection." +msgstr "Это необходимо для подключения OpenVPN через UDP или Wireguard." + +msgid "The list of configured VPN server IP addresses: %s" +msgstr "Список настроенных IP-адресов VPN-серверов: %s" + +msgid "Disable Firewall" +msgstr "Отключить брандмауэр" + +msgid "Enable Firewall" +msgstr "Включить брандмауэр" + +msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." +msgstr "Изменение состояния брандмауэра может нарушить или разрешить входящий трафик. Выберите Приступить, чтобы продолжить." + +msgid "Proceed" +msgstr "Приступить" + +msgid "Apply changes" +msgstr "Применить изменения" + +msgid "Dynamic DNS" +msgstr "Динамический DNS" + +msgid "Service provider" +msgstr "Поставщик услуг" + +msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." +msgstr "Выберите службу Dynamic DNS, поддерживаемую ddclient, из списка ниже. При выборе известного поставщика услуг будут заполнены поля протокола и сервера. Вы также можете настроить службу вручную." + +msgid "Method to obtain IP" +msgstr "Метод получения IP" + +msgid "Select the method used by ddclient to obtain an IP address. This value is specified in the -use option." +msgstr "Выберите метод, используемый ddclient для получения IP-адреса. Это значение указывается в параметре -use." + +msgid "Discovery page on the web" +msgstr "Страница открытия в Интернете" + +msgid "Network interface" +msgstr "Сетевой интерфейс" + +msgid "Network address" +msgstr "Сетевой адрес" + +msgid "Firewall status page" +msgstr "Страница состояния брандмауэра" + +msgid "External command" +msgstr "Внешняя команда" + +msgid "Web address" +msgstr "Веб-адрес" + +msgid "Firewall" +msgstr "Брандмауэр" + +msgid "Command" +msgstr "Команда" + +msgid "Example: 192.168.1.254/status.htm." +msgstr "Example: 192.168.1.254/status.htm." + +msgid "Example: /usr/local/bin/get-ip." +msgstr "Пример: /usr/local/bin/get-ip." + +msgid "Domain" +msgstr "Домен" + +msgid "Enable SSL" +msgstr "Включить SSL" + +msgid "Use an encrypted SSL connection for updates. Not supported by all providers." +msgstr "Используйте зашифрованное SSL-соединение для обновлений. Поддерживается не всеми провайдерами." + +msgid "Value specified in milliseconds (ms). Default is 300." +msgstr "Значение указывается в миллисекундах (мс). По умолчанию - 300." + +msgid "Use the Generate log button to output detailed ddclient daemon debug info" +msgstr "Используйте кнопку Генерировать журнал для вывода подробной отладочной информации о демоне ddclient." + +msgid "Generate log" +msgstr "Создать журнал" + +msgid "Information provided by ddclient" +msgstr "Информация предоставлена ddclient" + +msgid "Start Dynamic DNS" +msgstr "Запуск динамического DNS" + +msgid "Stop Dynamic DNS" +msgstr "Остановить динамический DNS" + +msgid "Restart Dynamic DNS" +msgstr "Перезапуск динамического DNS" + +msgid "Account details" +msgstr "Детали счета" + +msgid "My account" +msgstr "Мой счет" + +msgid "Server location" +msgstr "Расположение сервера" + +msgid "Choosing Save settings will connect to the selected country." +msgstr "При выборе пункта Сохранить настройки будет установлено соединение с выбранной страной." + +msgid "Choosing Connect %s will connect to a recommended server." +msgstr "Выбрав Connect %s, вы подключитесь к рекомендуемому серверу." + +msgid "Select a country from the server location list" +msgstr "Выберите страну из списка местоположения сервера" + +msgid "Select a country..." +msgstr "Выберите страну..." + +msgid "Account information not available from %s's Linux CLI." +msgstr "Информация об учетной записи, недоступная из %s'Linux CLI." + +msgid "Attempting to connect to %s" +msgstr "Попытка подключения к %s" + +msgid "Attempting to connect VPN provider" +msgstr "Попытка подключения к VPN-провайдеру" + +msgid "Attempting to disconnect VPN provider" +msgstr "Попытка отключения VPN-провайдера" + +msgid "Expected %s binary not found at: %s" +msgstr "Ожидаемый двоичный файл %s не найден по адресу: %s" + +msgid "Visit the installation instructions for %s's Linux CLI." +msgstr "Посетите инструкцию по установке %s'Linux CLI." + +msgid "Unable to execute %s binary found at: %s" +msgstr "Невозможно выполнить двоичный файл %s , найденный по адресу: %s" + +msgid "Check that binary is executable and permissions exist in raspap.sudoers" +msgstr "Проверьте, что двоичный файл исполняемый и разрешения существуют в raspap.sudoers" + +msgid "Installed Linux CLI: %s" +msgstr "Установлен Linux CLI: %s" + +msgid "Current %s connection status is displayed below." +msgstr "Текущий %s Ниже отображается текущее состояние соединения." + +msgid "Information provided by %s" +msgstr "Информация предоставлена сайтом %s" + +msgid "Connect %s" +msgstr "Подключайтесь %s" + +msgid "Disconnect %s" +msgstr "Отключить %s" + +msgid "About" +msgstr "О сайте" + +msgid "Insiders" +msgstr "Инсайдеры" + +msgid "Contributing" +msgstr "Вклад" + +msgid "Check for update" +msgstr "Проверьте наличие обновления" + +msgid "New release check in progress..." +msgstr "Проверка нового релиза продолжается..." + +msgid "A new release is available: Version" +msgstr "Доступен новый выпуск: Версия" + +msgid "Installed version is the latest release." +msgstr "Установленная версия - это последняя версия." + +msgid "GitHub authentication" +msgstr "Аутентификация на GitHub" + +msgid "Updating Insiders requires GitHub authentication." +msgstr "Обновление Insiders требует аутентификации на GitHub." + +msgid "Your credentials will be sent to GitHub securely with SSL. However, use caution if your RaspAP install is on a WLAN shared by untrusted users." +msgstr "Ваши учетные данные будут отправлены на GitHub в безопасном режиме с использованием SSL. Однако будьте осторожны, если ваша установка RaspAP находится в WLAN, которую совместно используют недоверенные пользователи." + +msgid "Personal Access Token" +msgstr "Токен персонального доступа" + +msgid "Please provide a valid token." +msgstr "Пожалуйста, укажите действительный токен." + +msgid "Perform update" +msgstr "Выполнить обновление" + +msgid "Update in progress" +msgstr "Обновление в процессе" + +msgid "Application is being updated..." +msgstr "Приложение находится в стадии обновления..." + +msgid "Configuring update" +msgstr "Обновление конфигурации" + +msgid "Updating sources" +msgstr "Обновление источников" + +msgid "Installing package updates" +msgstr "Установка обновлений пакетов" + +msgid "Downloading latest files" +msgstr "Загрузка последних файлов" + +msgid "Installing application" +msgstr "Установка приложения" + +msgid "Update complete" +msgstr "Обновление завершено" + +msgid "An error occurred. Check the log at /tmp/raspap_install.log" +msgstr "Произошла ошибка. Проверьте журнал по адресу /tmp/raspap_install.log" + +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP - это совместное творение %1$s и %2$s при участии наших %3$s и %4$s. Узнайте больше о присоединении к проекту в качестве %5$s, %6$s или %7$s с немедленным доступом к %8$s , доступным на %9$s." + +msgid "developer community" +msgstr "сообщество разработчиков" + +msgid "language translators" +msgstr "языковые переводчики" + +msgid "code contributor" +msgstr "автор кода" + +msgid "translator" +msgstr "переводчик" + +msgid "financial sponsor" +msgstr "финансовый спонсор" + +msgid "exclusive features" +msgstr "эксклюзивные функции" + +msgid "RaspAP Exception" +msgstr "Исключение RaspAP" + +msgid "An exception occurred" +msgstr "Произошло исключение" + +msgid "RestAPI" +msgstr "RestAPI" + +msgid "RestAPI settings" +msgstr "Настройки RestAPI" + +msgid "Start RestAPI service" +msgstr "Запустите службу RestAPI" + +msgid "Stop RestAPI service" +msgstr "Остановите службу RestAPI" + +msgid "API Key" +msgstr "Ключ API" + +msgid "Saving API key" +msgstr "Сохранение ключа API" + +msgid "RestAPI status" +msgstr "Статус RestAPI" + +msgid "Current restapi.service status is displayed below." +msgstr "Текущее состояние службы restapi.service отображается ниже." + +msgid "RestAPI docs are accessible here%s" +msgstr "Документация по RestAPI доступна здесь%s. " + +msgid "Restarting restapi.service" +msgstr "Перезапуск службы restapi.service" + +msgid "Information provided by restapi.service" +msgstr "Информация предоставлена сервисом restapi.service" + +msgid "Session Expired" +msgstr "Сессия истекла" + +msgid "Your session has expired. Please login to continue." +msgstr "Срок действия вашей сессии истек. Пожалуйста, войдите в систему, чтобы продолжить." + +msgid "Login" +msgstr "Войти" + +msgid "Administrator login" +msgstr "Вход в систему администратора" + +msgid "Forgot password" +msgstr "Забыли пароль" + +msgid "Login failed" +msgstr "Вход в систему не удался" + +msgid "NTP Server" +msgstr "Сервер NTP" + +msgid "NTP Server settings" +msgstr "Настройки сервера NTP" + +msgid "NTP daemon" +msgstr "Демон NTP" + +msgid "Synchronized time" +msgstr "Синхронизированное время" + +msgid "NTP servers" +msgstr "Серверы NTP" + +msgid "Add an NTP server" +msgstr "Добавьте сервер NTP" + +msgid "Start NTP service" +msgstr "Запустите службу NTP" + +msgid "Stop NTP service" +msgstr "Остановите службу NTP" + +msgid "Edit mode" +msgstr "Режим редактирования" + +msgid "Use the Edit mode toggle to manually edit the current ntp.config configuration." +msgstr "Используйте переключатель Edit mode для ручного редактирования текущей конфигурации ntp.config." + +msgid "Specify a public NTP server or a private one on your local network. IPv4 and IPv6 address, or a fully qualified domain name (FQDN) are acceptable values." +msgstr "Укажите публичный или частный сервер NTP в локальной сети. Допустимыми значениями являются адреса IPv4 и IPv6 или полностью определенное доменное имя (FQDN)." + +msgid "Public NTP servers supporting Network Time Security (NTS) may be specified with the nts suffix." +msgstr "Публичные NTP-серверы с поддержкой Network Time Security (NTS) могут быть указаны с суффиксом nts." + +msgid "Examples of valid server entries include %s, %s and %s." +msgstr "Примеры допустимых записей сервера включают %s, %s и %s." + +msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." +msgstr "Текущий статус ntpq peer отображается ниже. Звездочка(*) указывает на предпочтительный сервер." + +msgid "NTP configuration cannot be empty" +msgstr "Конфигурация NTP не может быть пустой" + +msgid "Restarting ntpd.service" +msgstr "Перезапуск службы ntpd.service" + +msgid "Please enter a valid NTP server" +msgstr "Введите действительный сервер NTP" + +msgid "Attempting to start ntp.service" +msgstr "Попытка запуска службы ntp.service" + +msgid "Attempting to stop ntp.service" +msgstr "Попытка остановить службу ntp.service" + +msgid "NTP configuration not found at %s" +msgstr "Конфигурация NTP не найдена по адресу %s." + +msgid "NTP configuration updated" +msgstr "Обновление конфигурации NTP" + +msgid "Advertising device as a Tailscale exit node" +msgstr "Реклама устройства как узла выхода Tailscale" + +msgid "Attempting to optimize UDP throughput" +msgstr "Попытка оптимизировать пропускную способность UDP" + +msgid "Kernel transport layer offloads enabled for UDP" +msgstr "Разгрузка транспортного уровня ядра включена для UDP" + +msgid "Failed to enable kernel transport layer offloads for UDP" +msgstr "Не удалось включить разгрузку транспортного уровня ядра для UDP" + +msgid "Attempting to set tailscale up" +msgstr "Попытка установить шкалу хвостов" + +msgid "Attempting to set tailscale down" +msgstr "Попытка уменьшить масштаб хвоста" + +msgid "Attempting to disconnect from tailscale" +msgstr "Попытка отключиться от tailscale" + +msgid "Disconnected from tailscale and expired node key" +msgstr "Отключился от tailscale и истек срок действия ключа узла" + +msgid "Unable to disconnect from tailscale" +msgstr "Невозможно отключиться от tailscale" + +msgid "Expected tailscale binary not found at: %" +msgstr "Ожидаемый двоичный файл tailscale не найден по адресу: %" + +msgid "A Tailscale VPN exit node extension for RaspAP" +msgstr "Расширение выходного узла Tailscale VPN для RaspAP" + +msgid "Unable to retrieve Tailscale login. Choose %s to continue." +msgstr "Невозможно получить логин Tailscale. Выберите %s чтобы продолжить." + +msgid "Start Tailscale" +msgstr "Начать шкалу хвостов" + +msgid "Stop Tailscale" +msgstr "Остановить шкалу хвостов" + +msgid "Next" +msgstr "Следующий" + +msgid "Device approved and activated as a Tailscale exit node" +msgstr "Устройство утверждено и активировано в качестве узла выхода Tailscale" + +msgid "Not connected: Login required." +msgstr "Не подключен: Требуется вход в систему." + +msgid "Tailscale VPN" +msgstr "Tailscale VPN" + +msgid "Exit node activated" +msgstr "Выходной узел активирован" + +msgid "The device %s is connected with the address %s and offers an exit node." +msgstr "Устройство %s связано с адресом %s и предлагает узел выхода." + +msgid "See the %s on how to use this exit node with your devices." +msgstr "О том, как использовать этот узел выхода с вашими устройствами, читайте на сайте %s ." + +msgid "Allow exit node" +msgstr "Разрешить выходной узел" + +msgid "The device %s is pending approval as an exit node." +msgstr "Устройство %s ожидает утверждения в качестве узла выхода." + +msgid "Locate the %s Exit Node badge in the machines list." +msgstr "Найдите значок %s Значок Exit Node в списке машин." + +msgid "Open Tailscale Machines" +msgstr "Открытые хвостовые машины" + +msgid "To allow this device as an exit node, choose Open Tailscale Machines." +msgstr "Чтобы разрешить использовать это устройство в качестве выходного узла, выберите Open Tailscale Machines." + +msgid "From the %s icon menu of the exit node, open the %s panel." +msgstr "В меню значка %s узла выхода откройте панель %s ." + +msgid "Edit route settings" +msgstr "Редактирование настроек маршрута" + +msgid "Login to Tailscale" +msgstr "Вход в Tailscale" + +msgid "To connect device %s to your tailnet, choose %s." +msgstr "Чтобы подключить устройство %s к хвостовой сетке, выберите %s." + +msgid "After logging in, choose Next to continue." +msgstr "После входа в систему выберите Далее, чтобы продолжить." + +msgid "Configure exit node" +msgstr "Настройка узла выхода" + +msgid "The device %s is connected to your tailnet with the address %s." +msgstr "Устройство %s подключено к вашей хвостовой сети с адресом %s." + +msgid "By default, Tailscale only routes traffic between the devices on which it's been installed. You can also route all your public internet traffic by configuring a device on your network as a exit node" +msgstr "По умолчанию Tailscale маршрутизирует трафик только между устройствами, на которых он установлен. Вы также можете маршрутизировать весь публичный интернет-трафик, настроив устройство в вашей сети в качестве узла выхода" + +msgid "When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN." +msgstr "Когда вы направляете весь трафик через выходной узел, вы эффективно используете маршруты по умолчанию (0.0.0.0/0, ::/0), аналогично тому, как это делается при использовании обычной VPN." + +msgid "You have the option of configuring this device as an exit node, or using another exit node in your tailnet." +msgstr "У вас есть возможность настроить это устройство в качестве узла выхода или использовать другой узел выхода в хвостовой сети." + +msgid "Select an existing exit node on your tailnet" +msgstr "Выберите существующий узел выхода в вашей хвостовой сети" + +msgid "This is a typical configuration if you're using this device as a VPN travel router, for example." +msgstr "Это типичная конфигурация, если вы используете это устройство, например, в качестве маршрутизатора для путешествий с VPN." + +msgid "Configure this device as a new exit node" +msgstr "Настройте это устройство в качестве нового узла выхода" + +msgid "By configuring this device as an exit node, public internet traffic from devices connected in your tailnet will be routed through it." +msgstr "Если настроить это устройство как выходной узел, через него будет направляться публичный интернет-трафик от устройств, подключенных в вашей хвостовой сети." + +msgid "For security reasons, you must opt in to enable exit node functionality. The first step is to advertise %s as an exit node in your tailnet. In the next step, you'll allow this device to be an exit node." +msgstr "По соображениям безопасности, чтобы включить функциональность узла выхода, вы должны зарегистрироваться. Первым шагом будет реклама %s в качестве узла выхода в вашей хвостовой сети. На следующем этапе вы разрешите этому устройству быть узлом выхода." + +msgid "Advertise %s as an exit node" +msgstr "Рекламируйте %s как узел выхода" + +msgid "This effectively configures Tailscale as a VPN to mask your real location, access region-restricted content, or enhance privacy when connecting from untrusted networks." +msgstr "Это позволяет эффективно настроить Tailscale как VPN для маскировки вашего реального местоположения, доступа к контенту с региональными ограничениями или повышения конфиденциальности при подключении из недоверенных сетей." + +msgid "This option lets Tailscale know your device is ready to route traffic." +msgstr "Эта опция позволяет Tailscale узнать, что ваше устройство готово к маршрутизации трафика." + +msgid "Recommended for Tailscale exit nodes with Linux 6.2 or later kernels, this uses UDP generic receive offload (GRO) forwarding to reduce CPU overhead." +msgstr "Рекомендуется для выходных узлов Tailscale с ядрами Linux 6.2 или более поздних версий, использует переадресацию UDP generic receive offload (GRO) для снижения нагрузки на процессор." + +msgid "This option enables transport layer offloads for better performance." +msgstr "Эта опция включает разгрузку транспортного уровня для повышения производительности." + +msgid "Select an exit node" +msgstr "Выберите узел выхода" + +msgid "To use %s as a VPN gateway, configure Tailscale to use an exit node. Tailscale's suggested node is indicated with a star." +msgstr "Чтобы использовать %s в качестве VPN-шлюза, настройте Tailscale на использование узла выхода. Предлагаемый Tailscale узел обозначен звездочкой." + +msgid "Advertise a subnet route for the active %s AP interface" +msgstr "Рекламируйте маршрут подсети для активного %s интерфейс точки доступа" + +msgid "Subnet routes let you extend your Tailscale network (known as a tailnet) to include devices that don't or can't run the Tailscale client." +msgstr "Маршруты подсети позволяют расширить сеть Tailscale (так называемую tailnet), включив в нее устройства, на которых нет или не может работать клиент Tailscale." + +msgid "A subnet route acts as a gateway between your tailnet and a physical subnet. The subnet of the active AP interface is preconfigured below; edit if necessary." +msgstr "Маршрут подсети действует как шлюз между хвостовой сетью и физической подсетью. Ниже приведена предварительная настройка подсети активного интерфейса точки доступа; при необходимости отредактируйте ее." + +msgid "Route LAN traffic through the exit node." +msgstr "Направьте трафик локальной сети через выходной узел." + +msgid "This will direct all LAN traffic to go through your exit node only." +msgstr "Это направит весь трафик локальной сети только через ваш выходной узел." + +msgid "Choose Next to configure %s to use the selected exit node with these options." +msgstr "Выберите Далее, чтобы настроить %s для использования выбранного узла выхода с этими параметрами." + +msgid "No exit nodes found on your tailnet. Choose Back to continue." +msgstr "В вашей хвостовой сети не обнаружено узлов выхода. Выберите Назад, чтобы продолжить." + +msgid "Using exit node" +msgstr "Использование узла выхода" + +msgid "The device %s is configured to use exit node %s. It has the Tailscale MagicDNS address %s." +msgstr "Устройство %s настроено на использование узла выхода %s. У него есть адрес Tailscale MagicDNS %s." + +msgid "Choose Save settings to continue." +msgstr "Выберите Сохранить настройки, чтобы продолжить." + +msgid "Choose Next to continue." +msgstr "Выберите Далее, чтобы продолжить." + +msgid "Tailnet status" +msgstr "Состояние хвостовой части" + +msgid "Current tailnet status is displayed below." +msgstr "Текущее состояние хвостовой части отображается ниже." + +msgid "Use Tailscale DNS settings (default)." +msgstr "Использовать настройки Tailscale DNS (по умолчанию)." + +msgid "Uncheck to use local DNS. This sets --accept-dns=false." +msgstr "Снимите флажок, чтобы использовать локальный DNS. При этом устанавливается --accept-dns=false." + +msgid "Do not use Tailscale subnets (default on Linux)." +msgstr "Не используйте подсети Tailscale (по умолчанию в Linux)." + +msgid "If subnet routes exist for your tailnet, you can route your device's traffic to a subnet router. Enabling this sets --accept-routes=true." +msgstr "Если для вашей хвостовой сети существуют маршруты подсети, вы можете направить трафик вашего устройства на маршрутизатор подсети. Включение этого параметра устанавливает значение --accept-routes=true." + +msgid "If keys expire for a device, connections to/from the given endpoint will stop working." +msgstr "Если срок действия ключей для устройства истекает, соединения с/из данной конечной точки перестают работать." + +msgid "This option uses --force-reauth to renew the keys for this device." +msgstr "Эта опция использует --force-reauth для обновления ключей для этого устройства." + +msgid "Start capture" +msgstr "Начать захват" + +msgid "Stop capture" +msgstr "Остановить захват" + +msgid "Capture files" +msgstr "Захват файлов" + +msgid "Capture interface" +msgstr "Интерфейс захвата" + +msgid "Output file" +msgstr "Выходной файл" + +msgid "Path where capture file will be saved (.pcap format)" +msgstr "Путь, по которому будет сохранен файл захвата (формат .pcap)" + +msgid "File will be saved with .pcap extension" +msgstr "Файл будет сохранен с расширением .pcap" + +msgid "Capture filter (BPF syntax)" +msgstr "Фильтр захвата (синтаксис BPF)" + +msgid "Berkeley Packet Filter syntax. Leave empty to capture all traffic." +msgstr "Синтаксис пакетного фильтра Berkeley. Оставьте пустым, чтобы перехватывать весь трафик." + +msgid "Examples: port 80, host 192.168.1.1, tcp and not port 22" +msgstr "Примеры: порт 80, хост 192.168.1.1, tcp, но не порт 22." + +msgid "Capture limits" +msgstr "Ограничения захвата" + +msgid "Packet count limit" +msgstr "Ограничение количества пакетов" + +msgid "Stop capture after this many packets. Leave empty for unlimited." +msgstr "Остановить захват после этого количества пакетов. Оставьте пустым для неограниченного количества." + +msgid "Duration limit (seconds)" +msgstr "Ограничение продолжительности (секунды)" + +msgid "Stop capture after this many seconds. Leave empty for unlimited." +msgstr "Остановить захват после этого количества секунд. Оставьте пустым для неограниченного времени." + +msgid "Ring buffer settings" +msgstr "Настройки кольцевого буфера" + +msgid "File size (KB)" +msgstr "Размер файла (КБ)" + +msgid "Create new file when this size is reached. Leave empty to disable." +msgstr "Создавать новый файл при достижении этого размера. Оставьте пустым, чтобы отключить." + +msgid "10000 = 10 MB per file" +msgstr "10000 = 10 МБ на файл" + +msgid "Number of files" +msgstr "Количество файлов" + +msgid "Maximum number of ring buffer files to keep. Oldest files are deleted." +msgstr "Максимальное количество файлов кольцевого буфера для хранения. Самые старые файлы удаляются." + +msgid "Advanced options" +msgstr "Дополнительные опции" + +msgid "Snapshot length (bytes)" +msgstr "Длина снимка (байты)" + +msgid "Limit the amount of data captured per packet. Leave empty for full packets." +msgstr "Ограничить количество данных, захватываемых на пакет. Оставьте пустым для полных пакетов." + +msgid "96 bytes captures headers only, reduces file size" +msgstr "96 байт захватывает только заголовки, уменьшает размер файла" + +msgid "Promiscuous mode" +msgstr "Неразборчивый режим" + +msgid "Capture all packets on the network segment, not just those destined for this interface" +msgstr "Захватывать все пакеты в сегменте сети, а не только те, которые предназначены для этого интерфейса" + +msgid "Quick filter presets" +msgstr "Быстрые предустановки фильтров" + +msgid "Capture files generated by tshark are displayed below." +msgstr "Файлы захвата, созданные tshark, отображаются ниже." + +msgid "No capture files found in /tmp directory" +msgstr "В каталоге /tmp не найдено файлов захвата" + +msgid "Filename" +msgstr "Имя файла" + +msgid "Size" +msgstr "Размер" + +msgid "Modified" +msgstr "Изменён" + +msgid "Actions" +msgstr "Действия" + +msgid "Download file" +msgstr "Скачать файл" + +msgid "Delete file" +msgstr "Удалить файл" + +msgid "Confirm deletion" +msgstr "Подтвердите удаление" + +msgid "Are you sure you want to delete this file?" +msgstr "Вы уверены, что хотите удалить этот файл?" + +msgid "All Traffic" +msgstr "Весь трафик" + +msgid "HTTP/HTTPS" +msgstr "HTTP/HTTPS" + +msgid "ICMP (Ping)" +msgstr "ICMP (Ping)" + +msgid "SSH" +msgstr "SSH" + +msgid "Exclude SSH" +msgstr "Исключить SSH" + +msgid "A Wireshark (TShark) CLI packet capture for RaspAP" +msgstr "Перехват пакетов Wireshark (TShark) CLI для RaspAP" + +msgid "Information provided by tshark" +msgstr "Информация предоставлена tshark" + +msgid "Total: %d file(s), %s" +msgstr "Всего: %d файл(ов), %s" + +msgid "Captive portal" +msgstr "Каптивный портал" + +msgid "Gateway interface" +msgstr "Интерфейс шлюза" + +msgid "Gateway name" +msgstr "Имя шлюза" + +msgid "Gateway address" +msgstr "Адрес шлюза" + +msgid "Gateway port" +msgstr "Порт шлюза" + +msgid "Defaults to the active AP interface, typically wlan0" +msgstr "По умолчанию - активный интерфейс точки доступа, обычно wlan0" + +msgid "Auto-detected from gateway interface if not specified" +msgstr "Автоматически определяется из интерфейса шлюза, если не указан" + +msgid "Start portal" +msgstr "Запустить портал" + +msgid "Stop portal" +msgstr "Остановить портал" + +msgid "Information provided by nodogsplash" +msgstr "Информация предоставлена nodogsplash" + +msgid "Stop portal service" +msgstr "Остановить службу портала" + +msgid "Start portal service" +msgstr "Запустить службу портала" + +msgid "Changing the portal service will momentarily disrupt client traffic. Choose Proceed to continue." +msgstr "Изменение службы портала временно нарушит клиентский трафик. Выберите Приступить, чтобы продолжить." + +msgid "Interface to be managed by the portal" +msgstr "Интерфейс, которым будет управлять портал" + +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "Имя вашего шлюза (доступно как переменная \\$gatewayname)" + +msgid "IP address of the router. Leave empty for auto-detection" +msgstr "IP-адрес маршрутизатора. Оставьте пустым для автоопределения" + +msgid "Port for Nodogsplash HTTP server" +msgstr "Порт для HTTP-сервера Nodogsplash" + +msgid "Maximum clients" +msgstr "Максимум клиентов" + +msgid "Session timeout (minutes)" +msgstr "Тайм-аут сеанса (минуты)" + +msgid "Pre-auth idle timeout (minutes)" +msgstr "Тайм-аут простоя перед авторизацией (минуты)" + +msgid "Does not include users on the trusted MAC list" +msgstr "Не включает пользователей из списка доверенных MAC-адресов" + +msgid "Auth idle timeout (minutes)" +msgstr "Тайм-аут простоя авторизации (минуты)" + +msgid "Check interval (seconds)" +msgstr "Интервал проверки (секунды)" + +msgid "MAC address control" +msgstr "Контроль MAC-адресов" + +msgid "MAC mechanism" +msgstr "Механизм MAC" + +msgid "Blocked MAC list" +msgstr "Список заблокированных MAC-адресов" + +msgid "Trusted MAC list" +msgstr "Список доверенных MAC-адресов" + +msgid "These devices are not subject to authentication or firewall rules" +msgstr "На эти устройства не распространяются правила аутентификации и брандмауэра" + +msgid "Maximum number of concurrent authenticated users" +msgstr "Максимальное количество одновременно аутентифицированных пользователей" + +msgid "Default session length in minutes. 0 = unlimited" +msgstr "Длительность сеанса по умолчанию в минутах. 0 = неограниченно" + +msgid "Time before unauthenticated idle users are removed" +msgstr "Время до удаления неаутентифицированных неактивных пользователей" + +msgid "Time before authenticated idle users are deauthenticated" +msgstr "Время до деаутентификации аутентифицированных неактивных пользователей" + +msgid "How often to check client timeouts" +msgstr "Как часто проверять тайм-ауты клиентов" + +msgid "Block: blocklisted MACs are blocked. Allow: only allowlisted MACs are allowed" +msgstr "Блокировать: заблокированные MAC-адреса блокируются. Разрешить: разрешены только разрешённые MAC-адреса" + +msgid "Example: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" +msgstr "Пример: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" + +msgid "Comma-separated MAC addresses that bypass authentication entirely" +msgstr "MAC-адреса через запятую, которые полностью обходят аутентификацию" + +msgid "Block (blocklist mode)" +msgstr "Блокировать (режим чёрного списка)" + +msgid "Allow (allowlist mode)" +msgstr "Разрешить (режим белого списка)" + +msgid "Gateway IP range" +msgstr "Диапазон IP-адресов шлюза" + +msgid "Default: 0.0.0.0/0 (all addresses)" +msgstr "По умолчанию: 0.0.0.0/0 (все адреса)" + +msgid "Debug level" +msgstr "Уровень отладки" + +msgid "Firewall settings" +msgstr "Настройки брандмауэра" + +msgid "Allow all traffic for authenticated users" +msgstr "Разрешить весь трафик для аутентифицированных пользователей" + +msgid "Allow DNS for pre-authenticated users" +msgstr "Разрешить DNS для предварительно аутентифицированных пользователей" + +msgid "IP range to manage in CIDR notation. Leave empty for all addresses" +msgstr "Диапазон IP-адресов для управления в нотации CIDR. Оставьте пустым для всех адресов" + +msgid "Amount of logging detail reported by the nodogsplash.service" +msgstr "Объём детализации журналирования, сообщаемый службой nodogsplash.service" + +msgid "0 - Errors only" +msgstr "0 - Только ошибки" + +msgid "1 - Errors, warnings, infos" +msgstr "1 - Ошибки, предупреждения, информация" + +msgid "2 - Errors, warnings, infos, verbose" +msgstr "2 - Ошибки, предупреждения, информация, подробно" + +msgid "3 - Errors, warnings, infos, verbose, debug" +msgstr "3 - Ошибки, предупреждения, информация, подробно, отладка" + +msgid "When enabled, authenticated users have unrestricted access" +msgstr "При включении аутентифицированные пользователи имеют неограниченный доступ" + +msgid "Required for clients to resolve domain names before authentication" +msgstr "Требуется для разрешения клиентами доменных имён перед аутентификацией" + +msgid "Portal status" +msgstr "Статус портала" + +msgid "Current nodogsplash status is displayed below." +msgstr "Текущий статус nodogsplash отображается ниже." diff --git a/locale/zh_CN/LC_MESSAGES/messages.mo b/locale/zh_CN/LC_MESSAGES/messages.mo index 2e8f36e7..21694eb5 100644 Binary files a/locale/zh_CN/LC_MESSAGES/messages.mo and b/locale/zh_CN/LC_MESSAGES/messages.mo differ diff --git a/locale/zh_CN/LC_MESSAGES/messages.po b/locale/zh_CN/LC_MESSAGES/messages.po index 5c080893..60fe6d34 100644 --- a/locale/zh_CN/LC_MESSAGES/messages.po +++ b/locale/zh_CN/LC_MESSAGES/messages.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: raspap\n" "Report-Msgid-Bugs-To: Bill Zimmerman \n" "POT-Creation-Date: 2017-10-19 08:56+0000\n" -"PO-Revision-Date: 2020-04-14 08:51\n" -"Last-Translator: BANKA2017 \n" +"PO-Revision-Date: 2025-11-20 12:19\n" +"Last-Translator: Bill Zimmerman \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" @@ -12,8 +12,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: raspap\n" +"X-Crowdin-Project-ID: 395801\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /master/locale/en_US/LC_MESSAGES/messages.po\n" +"X-Crowdin-File-ID: 10\n" #: index.php msgid "RaspAP Wifi Configuration Portal" @@ -22,8 +24,8 @@ msgstr "RaspAP WLAN热点设置中心" msgid "Toggle navigation" msgstr "响应式导航" -msgid "RaspAP Wifi Portal" -msgstr "RaspAP WLAN热点" +msgid "RaspAP Admin Panel" +msgstr "RaspAP 管理面板" msgid "Dashboard" msgstr "仪表板" @@ -31,14 +33,20 @@ msgstr "仪表板" msgid "WiFi client" msgstr "WLAN客户端设置" +msgid "Status" +msgstr "状态" + msgid "Hotspot" msgstr "WLAN热点设置" -msgid "Memory Use" -msgstr "内存用量" +msgid "Logging" +msgstr "记录" -msgid "CPU Temp" -msgstr "CPU 温度" +msgid "Mem Use" +msgstr "内存使用" + +msgid "CPU" +msgstr "CPU" msgid "Networking" msgstr "网络设置" @@ -55,9 +63,6 @@ msgstr "TOR代理设置" msgid "Authentication" msgstr "登录设置" -msgid "Change Theme" -msgstr "主题中心" - msgid "System" msgstr "系统" @@ -95,6 +100,69 @@ msgstr "新密码" msgid "Repeat new password" msgstr "重复新密码" +msgid "Please provide a valid username." +msgstr "请提供有效的用户名。" + +msgid "Please provide a valid password." +msgstr "请提供有效密码。" + +msgid "Please enter your old password." +msgstr "请输入您的旧密码。" + +msgid "Please enter a new password." +msgstr "请输入新密码。" + +msgid "Please re-enter your new password." +msgstr "请重新输入您的新密码。" + +msgid "Avatar" +msgstr "头像" + +msgid "Click or tap to upload a new user avatar." +msgstr "点击或轻点上传新的用户头像。" + +msgid "Image files of type JPG, GIF or PNG are accepted. Max file size: 2 MB." +msgstr "接受JPG、GIF 或 PNG类型的图像文件。最大文件大小:2 MB。" + +msgid "Reset avatar" +msgstr "重置头像" + +msgid "Enable limited privilege user" +msgstr "启用有限权限用户" + +msgid "This option enables a non-admin user who can access RaspAP's management interface, but has limited ability to modify the existing configuration. This user becomes active when the current admin user is logged-out." +msgstr "该选项启用一个非管理员用户,该用户可以访问 RaspAP 的管理界面,但修改现有配置的能力有限。该用户在当前管理员用户注销后激活。" + +msgid "Admin login failed. Please try again." +msgstr "管理员登录失败。请重试。" + +msgid "Limited privilege user mode enabled" +msgstr "已启用有限权限用户模式" + +msgid "Failed to enable limited privilege user mode" +msgstr "启用有限权限用户模式失败" + +msgid "Logout and enable limited user mode" +msgstr "注销并启用有限用户模式" + +msgid "Limited user login" +msgstr "限制用户登录" + +msgid "Limited user password" +msgstr "有限用户密码" + +msgid "This action will save the limited user's credentials and logout the current admin user. Save and enable limited privilege mode?" +msgstr "此操作将保存受限用户的凭证并注销当前管理员用户。保存并启用有限权限模式?" + +msgid "Save and logout" +msgstr "保存并注销" + +msgid "Admin credentials updated successfully" +msgstr "管理员证书更新成功" + +msgid "Limited user credentials updated successfully" +msgstr "有限用户证书更新成功" + #: includes/configure_client.php msgid "Client settings" msgstr "客户端设置" @@ -144,9 +212,33 @@ msgstr "隐藏" msgid "Not configured" msgstr "未配置" +msgid "Connected" +msgstr "连接" + +msgid "Known" +msgstr "已知" + +msgid "Nearby" +msgstr "附近" + msgid "Note: WEP access points appear as 'Open'. RaspAP does not currently support connecting to WEP" msgstr "提示: 若目标热点已打开WEP登录验证,本程序将不支持连接到此类网络" +msgid "No Wifi stations found" +msgstr "未找到 Wifi 站" + +msgid "Reinitialized wpa_supplicant. Choose Rescan." +msgstr "重新初始化 wpa_supplicant。选择重新扫描。" + +msgid "Click 'Rescan' to search for nearby Wifi stations." +msgstr "点击 \"重新扫描 \"搜索附近的 Wifi 站。" + +msgid "Click 'Reinitialize' to force reinitialize wpa_supplicant." +msgstr "单击 \"重新初始化 \"强制重新初始化wpa_supplicant。" + +msgid "Reinitialize" +msgstr "重新初始化" + #: includes/dashboard.php msgid "Interface Information" msgstr "接口信息" @@ -205,8 +297,8 @@ msgstr "频率" msgid "Link Quality" msgstr "连接质量" -msgid "Information provided by ip and iw and from system" -msgstr "ip和iw以及系统所提供的信息" +msgid "Information provided by raspap.system" +msgstr "由 raspap.system 提供的信息" msgid "No MAC Address Found" msgstr "没有找到MAC地址" @@ -241,16 +333,147 @@ msgstr "关闭wlan0接口" msgid "Connected Devices" msgstr "连接设备" +msgid "Client: Ethernet cable" +msgstr "客户端:以太网电缆" + +msgid "Current status" +msgstr "当前状态" + +msgid "Ethernet" +msgstr "以太网" + +msgid "Client: Smartphone (USB tethering)" +msgstr "客户端:智能手机(USB 连接)" + +msgid "Smartphone" +msgstr "智能手机" + +msgid "WiFi" +msgstr "WiFi" + +msgid "Repeater" +msgstr "中继器" + +msgid "Tethering" +msgstr "系绳" + +msgid "Cellular" +msgstr "手机" + +msgid "AP" +msgstr "AP" + +msgid "Bridged" +msgstr "桥接" + +msgid "Adblock" +msgstr "广告拦截" + +msgid "VPN" +msgstr "VPN" + +msgid "Netmask" +msgstr "网络掩码" + +msgid "5G" +msgstr "5G" + +msgid "2.4G" +msgstr "2.4G" + +msgid "%d WLAN %s" +msgstr "%d 无线局域网 %s" + +msgid "client" +msgid_plural "clients" +msgstr[0] "客户" + +msgid "Mobile Data Client" +msgstr "移动数据客户端" + +msgid "Mobile Data" +msgstr "移动数据" + +msgid "No information available" +msgstr "无可用信息" + +msgid "Interface name invalid" +msgstr "接口名称无效" + +msgid "Required exec function is disabled. Check if exec is not added to php disable_functions." +msgstr "所需的 exec 函数已禁用。检查 exec 是否未添加到 phpdisable_functions。" + +msgid "Waiting for the interface to start ..." +msgstr "等待界面启动..." + +msgid "Stop the Interface" +msgstr "停止界面" + +msgid "Connection mode" +msgstr "连接模式" + +msgid "Signal quality" +msgstr "信号质量" + +msgid "WAN IP" +msgstr "广域网 IP" + +msgid "Signal strength" +msgstr "信号强度" + +msgid "No Client device or not yet configured" +msgstr "无客户端设备或尚未配置" + +msgid "No Client device found" +msgstr "未找到客户端设备" + +#: includes/footer.php +msgid "Created by the %s" +msgstr "由 %s" + +msgid "RaspAP Team" +msgstr "RaspAP 团队" + +msgid "Get Insiders" +msgstr "获取内部人员" + +msgid "Thanks for being an Insider" +msgstr "感谢成为内部人员" + #: includes/dhcp.php msgid "DHCP server settings" msgstr "DHCP服务器设置" +msgid "Default gateway" +msgstr "默认网关" + +msgid "Install a default route for this interface" +msgstr "为该接口安装默认路由" + +msgid "Static IP options" +msgstr "静态 IP 选项" + +msgid "DHCP options" +msgstr "DHCP 选项" + +msgid "Enable this option if you want RaspAP to assign IP addresses to clients on the selected interface. A static IP address is required for this option." +msgstr "如果希望 RaspAP 为所选接口上的客户端分配 IP 地址,请启用此选项。该选项需要一个静态 IP 地址。" + +msgid "Enable this only if you want your device to use this interface as its primary route to the internet." +msgstr "仅当您希望设备将此接口作为连接互联网的主要路由时才启用。" + msgid "Client list" msgstr "客户端列表" msgid "Interface" msgstr "接口" +msgid "Enable DHCP for this interface" +msgstr "为该接口启用 DHCP" + +msgid "Enable this option if you want RaspAP to assign IP addresses on the selected interface." +msgstr "如果希望 RaspAP 在所选接口上分配 IP 地址,请启用此选项。" + msgid "DNS Server" msgstr "DNS服务器" @@ -281,6 +504,9 @@ msgstr "生存时间" msgid "MAC Address" msgstr "MAC地址" +msgid "Optional comment" +msgstr "可选注释" + msgid "Host name" msgstr "设备名称" @@ -344,12 +570,84 @@ msgstr "格式" msgid "Choose a hosted server" msgstr "选择托管服务器" +msgid "Enable these options to log dhcpcd and dnsmasq activity." +msgstr "启用这些选项可记录dhcpcddnsmasq活动。" + msgid "Log DHCP requests" msgstr "记录 DHCP 请求" msgid "Log DNS queries" msgstr "记录 DNS 查询" +msgid "Restrict access" +msgstr "限制访问" + +msgid "Limit network access to static clients" +msgstr "限制静态客户端访问网络" + +msgid "Enable this option if you want RaspAP to ignore any clients which are not specified in the static leases list." +msgstr "如果希望 RaspAP忽略任何未在静态租约列表中指定的客户端,请启用此选项。" + +msgid "This option adds dhcp-ignore to the dnsmasq configuration." +msgstr "该选项将dhcp-ignore添加到 dnsmasq 配置中。" + +msgid "Clients with a particular hardware MAC address can always be allocated the same IP address." +msgstr "具有特定硬件 MAC 地址的客户端总是可以分配到相同的 IP 地址。" + +msgid "This option adds dhcp-host entries to the dnsmasq configuration." +msgstr "该选项将dhcp-host条目添加到 dnsmasq 配置中。" + +msgid "This toggles the gateway/nogateway option for this interface in the dhcpcd.conf file." +msgstr "在 dhcpcd.conf 文件中切换此接口的网关/ 网关选项。" + +msgid "This toggles the nohook wpa_supplicant option for this interface in the dhcpcd.conf file." +msgstr "此选项可在 dhcpcd.conf 文件中切换此接口的nohook wpa_supplicant选项。" + +msgid "Disable wpa_supplicant dhcp hook for this interface" +msgstr "禁用此接口的 wpa_supplicant dhcp 钩子" + +msgid "If you manage wireless connections with wpa_supplicant itself, the hook may create unwanted connection events. This option disables the hook." +msgstr "如果使用 wpa_supplicant 本身管理无线连接,钩子可能会产生不必要的连接事件。此选项将禁用钩子。" + +msgid "Please provide a valid IP Address." +msgstr "请提供有效的 IP 地址。" + +msgid "Please provide a valid Default gateway." +msgstr "请提供有效的默认网关。" + +msgid "Please provide a valid Starting IP Address." +msgstr "请提供有效的起始 IP 地址。" + +msgid "Please provide a valid Ending IP Address." +msgstr "请提供有效的结束 IP 地址。" + +msgid "Please provide a valid Lease Time." +msgstr "请提供有效的租用时间。" + +msgid "Invalid interface name." +msgstr "无效接口名称。" + +msgid "Invalid static IP address." +msgstr "静态 IP 地址无效。" + +msgid "Invalid default gateway." +msgstr "默认网关无效。" + +msgid "Invalid DHCP range start." +msgstr "无效的 DHCP 范围起始。" + +msgid "Invalid DHCP range end." +msgstr "无效的 DHCP 范围结束。" + +msgid "Invalid DHCP lease time, not a number." +msgstr "DHCP 租约时间无效,不是数字。" + +msgid "Unknown DHCP lease time unit." +msgstr "未知 DHCP 租约时间单位。" + +msgid "Invalid metric value, not a number." +msgstr "度量值无效,不是数字。" + #: includes/hostapd.php msgid "Basic" msgstr "基础" @@ -372,8 +670,8 @@ msgstr "安全性" msgid "Encryption Type" msgstr "加密模式" -msgid "PSK" -msgstr "密码" +msgid "Pre-shared key (PSK)" +msgstr "预共享密钥 (PSK)" msgid "Advanced settings" msgstr "高级设置" @@ -408,11 +706,26 @@ msgstr "未知接口" msgid "Country code must be blank or two characters" msgstr "地区代号只能为空或两个字符" -msgid "Wifi Hotspot settings saved" -msgstr "WLAN热点设置已保存" +msgid "DHCP configuration for %s enabled." +msgstr "已启用 %s 的 DHCP 配置。" -msgid "Unable to save wifi hotspot settings" -msgstr "WLAN热点设置保存失败" +msgid "DHCP configuration for %s added." +msgstr "添加了 %s 的 DHCP 配置。" + +msgid "DHCP configuration for %s updated." +msgstr "%s 的 DHCP 配置已更新。" + +msgid "Interface %s has no default settings." +msgstr "界面 %s 没有默认设置。" + +msgid "Configure settings in DHCP Server before starting AP." +msgstr "启动 AP 前在DHCP 服务器中配置设置。" + +msgid "Wifi hotspot settings saved." +msgstr "已保存 Wifi 热点设置。" + +msgid "Unable to save WiFi hotspot settings." +msgstr "无法保存 WiFi 热点设置。" msgid "Start hotspot" msgstr "开启WLAN热点" @@ -429,25 +742,217 @@ msgstr "开启log" msgid "Logfile output" msgstr "log信息输出" +msgid "Log level" +msgstr "日志级别" + +msgid "Higher levels reduce log verbosity. Informational is recommended." +msgstr "级别越高,日志的冗长程度越低。建议使用 \"信息 \"级别。" + +msgid "Verbose debugging" +msgstr "详细调试" + +msgid "Debugging" +msgstr "调试" + +msgid "Informational" +msgstr "信息" + +msgid "Notification" +msgstr "通知" + +msgid "Warning" +msgstr "警告" + msgid "WiFi client AP mode" msgstr "无线网客户端AP模式" msgid "Bridged AP mode" msgstr "桥接 AP 模式" +msgid "WiFi repeater mode" +msgstr "WiFi 中继器模式" + +msgid "Dual band AP mode" +msgstr "双频 AP 模式" + msgid "Hide SSID in broadcast" msgstr "在广播中隐藏SSID" msgid "Maximum number of clients" msgstr "客户端最大数量" -msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." -msgstr "设置hostapd上的max_num_sta选项。默认值和最大值是2007。如果为空或为0,则应用默认值。" +msgid "Configures the max_num_sta option of hostapd. The default and maximum is 2007. If empty or 0, the default applies." +msgstr "配置 hostapd 的max_num_sta选项。默认最大值为 2007。如果为空或 0,则使用默认值。" + +msgid "Beacon interval" +msgstr "信标间隔" + +msgid "Disable disassoc_low_ack" +msgstr "禁用disassoc_low_ack" + +msgid "Do not disassociate stations based on excessive transmission failures." +msgstr "不要因为过多的传输失败而解散站点。" + +msgid "Executing RaspAP service start" +msgstr "执行 RaspAP 服务启动" + +msgid "Close" +msgstr "关闭" + +msgid "Enable this option to log hostapd activity." +msgstr "启用此选项可记录hostapd活动。" + +msgid "Transmit power (dBm)" +msgstr "发射功率(dBm)" + +msgid "Sets the txpower option for the AP interface and the configured country." +msgstr "为 AP 接口和配置的国家设置txpower选项。" + +msgid "dBm is a unit of level used to indicate that a power ratio is expressed in decibels (dB) with reference to one milliwatt (mW). 30 dBm is equal to 1000 mW, while 0 dBm equals 1.25 mW." +msgstr "dBm 是一种电平单位,用于表示功率比以 1 毫瓦(mW)为基准,用分贝(dB)表示。30 dBm 等于 1000 mW,而 0 dBm 等于 1.25 mW。" + +msgid "WPA and WPA2" +msgstr "WPA 和 WPA2" + +msgid "WPA2 and WPA3-Personal (transitional mode)" +msgstr "WPA2 和 WPA3-个人(过渡模式)" + +msgid "WPA3-Personal (required)" +msgstr "WPA3-个人(必填)" + +msgid "Enabled (for supported clients)" +msgstr "已启用(适用于支持的客户端)" + +msgid "Required (for supported clients)" +msgstr "必须填写(适用于受支持的客户端)" + +msgid "802.11w extends strong cryptographic protection to a select set of robust management frames, including Deauthentication, Disassociation and certain categories of Action Management frames. Collectively, this is known as Management Frame Protection (MFP)." +msgstr "802.11w 将强加密保护扩展到一组精选的稳健管理帧,包括取消认证、解除关联和某些类别的 \"动作管理 \"帧。统称为管理帧保护 (MFP)。" + +msgid "Scan this QR code directly or %s %sprint a sign%s for your users." +msgstr "直接扫描此二维码或 %s %s打印一个标志%s 给您的用户。" + +msgid "Printable Wi-Fi sign" +msgstr "可打印 Wi-Fi 标志" + +msgid "To connect with your phone or tablet, scan the QR code above with your camera app." +msgstr "要与手机或平板电脑连接,请使用相机应用程序扫描上面的二维码。" + +msgid "For other devices, use the login credentials below." +msgstr "对于其他设备,请使用下面的登录凭证。" + +msgid "Network" +msgstr "网络" + +msgid "The selected interface (%s) has support for the 2.4 GHz wireless band only." +msgstr "所选接口 (%s) 仅支持 2.4 GHz 无线频段。" + +msgid "The selected interface (%s) has support for the 2.5 GHz wireless band only." +msgstr "所选接口 (%s) 仅支持 2.5 GHz 无线频段。" + +msgid "The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands." +msgstr "所选接口 (%s) 同时支持 2.4 和 5 GHz 无线频段。" + +msgid "The selected interface (%s) does not support wireless mode operation." +msgstr "所选接口 (%s) 不支持无线模式操作。" + +msgid "The 802.11ac 5 GHz option is disabled until a compatible wireless regulatory domain is set." +msgstr "在设置兼容的无线监管域之前,802.11ac 5 GHz 选项将被禁用。" + +msgid "WiFi repeater mode: A metric value is already defined for DHCP." +msgstr "WiFi 中继器模式:已为 DHCP 定义度量值。" + +msgid "Restart hotspot to enable WiFi repeater mode." +msgstr "重启热点以启用 WiFi 中继器模式。" + +msgid "Unable to obtain metric value for client interface. Repeater mode inactive." +msgstr "无法获取客户端接口的度量值。中继器模式未激活。" + +msgid "Metric value configured for the %s interface." +msgstr "为 %s 接口配置的度量值。" + +msgid "Parameter hiddenSSID contains invalid configuration value." +msgstr "参数 hiddenSSID 包含无效配置值。" + +msgid "Parameter hiddenSSID is not a number." +msgstr "参数 hiddenSSID 不是数字。" + +msgid "Bridge interface configuration" +msgstr "网桥接口配置" + +msgid "Configure a static IP address for the br0 interface to maintain connectivity during bridge mode activation." +msgstr "为br0接口配置静态 IP 地址,以便在网桥模式激活期间保持连接。" + +msgid "Static IP Address" +msgstr "静态 IP 地址" + +msgid "Netmask / CIDR" +msgstr "网络掩码/CIDR" + +msgid "Example: 192.168.1.100" +msgstr "示例:192.168.1.100" + +msgid "CIDR notation (e.g., 24 for 255.255.255.0)" +msgstr "CIDR 符号(例如,24 表示 255.255.255.0)" + +msgid "Gateway" +msgstr "网关" + +msgid "Your router's IP address" +msgstr "路由器 IP 地址" + +msgid "Usually same as gateway" +msgstr "通常与网关相同" + +msgid "Bridge static IP address must be a valid IPv4 address" +msgstr "网桥静态 IP 地址必须是有效的 IPv4 地址" + +msgid "Bridge netmask must be a number between 1 and 32" +msgstr "网桥掩码必须是 1 到 32 之间的数字" + +msgid "Bridge netmask is required when using static IP" +msgstr "使用静态 IP 时需要网桥掩码" + +msgid "Bridge gateway must be a valid IPv4 address" +msgstr "网桥网关必须是有效的 IPv4 地址" + +msgid "Bridge gateway is required when using static IP" +msgstr "使用静态 IP 时需要网桥网关" + +msgid "Bridge DNS server must be a valid IPv4 address" +msgstr "桥接 DNS 服务器必须是有效的 IPv4 地址" + +msgid "Bridge DNS server is required when using static IP" +msgstr "使用静态 IP 时需要桥接 DNS 服务器" + +msgid "Bridge static IP and gateway must be in the same subnet" +msgstr "网桥静态 IP 和网关必须在同一子网中" + +msgid "Please enter a valid IPv4 address" +msgstr "请输入有效的 IPv4 地址" + +msgid "Please enter a valid netmask" +msgstr "请输入有效的网络掩码" + +msgid "DHCP configuration for br0 enabled" +msgstr "已启用 br0 的 DHCP 配置" + +msgid "Unable to save WiFi hotspot settings due to validation errors" +msgstr "由于验证错误,无法保存 WiFi 热点设置" + +msgid "Enable AP isolation" +msgstr "启用 AP 隔离" + +msgid "Blocks wireless clients from seeing or connecting to each other. Recommended for guest networks and public access points." +msgstr "阻止无线客户端相互看到或连接。建议用于访客网络和公共接入点。" #: includes/networking.php msgid "Summary" msgstr "摘要" +msgid "Internet connection" +msgstr "网络连接" + msgid "Current settings" msgstr "当前设置" @@ -460,8 +965,11 @@ msgstr "备用DNS服务器" msgid "Adapter IP Address Settings" msgstr "适配器IP地址设置" -msgid "Enable Fallback to Static Option" -msgstr "启用退回静态的选项" +msgid "Enable fallback to static option" +msgstr "启用回退到静态选项" + +msgid "Enable this option to configure a static profile and fall back to it when DHCP lease fails." +msgstr "启用此选项可配置静态配置文件,并在 DHCP 租约失败时返回该配置文件。" msgid "Static IP" msgstr "静态IP" @@ -475,12 +983,165 @@ msgstr "已禁用" msgid "Static IP Options" msgstr "静态IP设置" +msgid "Metric" +msgstr "指标" + msgid "Apply settings" msgstr "请求设置" msgid "Information provided by /sys/class/net" msgstr "信息由 /sys/class/net 提供" +msgid "Devices" +msgstr "设备" + +msgid "Diagnostics" +msgstr "诊断" + +msgid "Network devices" +msgstr "网络设备" + +msgid "Device" +msgstr "设备" + +msgid "MAC address" +msgstr "MAC 地址" + +msgid "USB vid/pid" +msgstr "USB vid/pid" + +msgid "Device type" +msgstr "设备类型" + +msgid "Fixed name" +msgstr "固定名称" + +msgid "Change" +msgstr "更改" + +msgid "Mobile data settings" +msgstr "移动数据设置" + +msgid "SIM card PIN number" +msgstr "SIM 卡 PIN 码" + +msgid "APN Settings (Modem device ppp0)" +msgstr "APN 设置(调制解调器设备 ppp0)" + +msgid "Access Point Name (APN)" +msgstr "接入点名称 (APN)" + +msgid "Password" +msgstr "密码" + +msgid "Successfully Updated Network Configuration" +msgstr "成功更新网络配置" + +msgid "Error saving network configuration to file" +msgstr "将网络配置保存到文件时出错" + +msgid "Unable to detect interface" +msgstr "无法检测接口" + +msgid "Routing table" +msgstr "路由表" + +msgid "raw output" +msgstr "原始输出" + +msgid "Setting wireless regulatory domain to %s" +msgstr "将无线监管域设置为 %s" + +msgid "Please provide a valid SSID." +msgstr "请提供有效的 SSID。" + +msgid "Please provide a valid PSK." +msgstr "请提供有效的 PSK。" + +msgid "Speedtest" +msgstr "速度测试" + +msgid "Selecting a server" +msgstr "选择服务器" + +msgid "Privacy" +msgstr "隐私保护" + +msgid "Server" +msgstr "服务器" + +msgid "ms" +msgstr "ms" + +msgid "Mbps" +msgstr "Mbps" + +msgid "Ping" +msgstr "平" + +msgid "Jitter" +msgstr "抖动" + +msgid "Upload" +msgstr "上传" + +msgid "Start" +msgstr "开始" + +msgid "Abort" +msgstr "终止" + +msgid "Wireless LAN routing" +msgstr "无线局域网路由" + +msgid "Stop WLAN routing" +msgstr "停止 WLAN 路由" + +msgid "Start WLAN routing" +msgstr "启动 WLAN 路由" + +msgid "Restart WLAN routing" +msgstr "重启 WLAN 路由" + +msgid "This option configures RaspAP to route network traffic from your wireless client (STA) interface to another available interface." +msgstr "该选项配置 RaspAP 将无线客户端(STA)接口的网络流量路由到另一个可用接口。" + +msgid "When an output interface is selected, iptables rules are added to route packets using network address translation (NAT). This is often done to share internet connectivity from a WLAN with devices on an eth0, usb0 or predictable enx interface." +msgstr "选择输出接口时,会添加iptables规则,以使用网络地址转换(NAT)路由数据包。这样做通常是为了与使用eth0usb0或可预测enx接口的设备共享 WLAN 的互联网连接。" + +msgid "Wireless client interface" +msgstr "无线客户端界面" + +msgid "Output interface" +msgstr "输出接口" + +msgid "Configure a static IP address and DHCP for output interface" +msgstr "为输出接口配置静态 IP 地址和 DHCP" + +msgid "Attempting to enable routing between %s and %s interfaces" +msgstr "试图启用 %s 和 %s 接口之间的路由选择" + +msgid "Attempting to disable routing between %s and %s interfaces" +msgstr "试图禁用 %s 和 %s 接口之间的路由选择" + +msgid "No default DHCP configuration exists for the %s interface" +msgstr "%s 接口不存在默认 DHCP 配置" + +msgid "Configure a static IP and DHCP for this interface in DHCP Server settings" +msgstr "在 DHCP 服务器设置中为此接口配置静态 IP 和 DHCP" + +msgid "WLAN routing configuration saved" +msgstr "已保存 WLAN 路由配置" + +msgid "Unable to save WLAN routing configuration" +msgstr "无法保存 WLAN 路由配置" + +msgid "Successfully restarted dnsmasq" +msgstr "成功重启 dnsmasq" + +msgid "Failed to restart dnsmasq" +msgstr "重启 dnsmasq 失败" + #: includes/system.php msgid "System Information" msgstr "系统信息" @@ -509,31 +1170,234 @@ msgstr "树莓派型号" msgid "Uptime" msgstr "已开机时间" +msgid "System Time" +msgstr "系统时间" + msgid "Memory Used" msgstr "内存占用" +msgid "Storage Used" +msgstr "使用的存储空间" + msgid "CPU Load" msgstr "CPU负荷" +msgid "CPU Temp" +msgstr "CPU 温度" + msgid "Reboot" msgstr "重启" msgid "Shutdown" msgstr "关闭" +msgid "System reboot" +msgstr "系统重启" + +msgid "System shutdown" +msgstr "系统关闭" + +msgid "Reboot now? The system will be temporarily unavailable." +msgstr "现在重启?系统将暂时不可用。" + +msgid "Shutdown now? The system will be unavailable." +msgstr "现在关闭?系统将不可用。" + msgid "System Rebooting Now!" msgstr "系统现在正在重启!" msgid "System Shutting Down Now!" msgstr "系统现在正在关闭!" -#: includes/themes.php +msgid "Web server port" +msgstr "网络服务器端口" + +msgid "Web server bind address" +msgstr "网络服务器绑定地址" + +msgid "OS" +msgstr "操作系统" + +msgid "Kernel" +msgstr "内核" + +msgid "System reset" +msgstr "系统重置" + +msgid "Reset RaspAP to its initial configuration? This action cannot be undone." +msgstr "将 RaspAP 重置为初始配置?此操作不可撤销。" + +msgid "Reset complete. Restart the hotspot for the changes to take effect." +msgstr "重置完成。重新启动热点,使更改生效。" + +msgid "System reset in progress..." +msgstr "系统重置中..." + +msgid "Reset" +msgstr "重置" + +msgid "Restore settings" +msgstr "恢复设置" + +msgid "To reset RaspAP to its initial configuration, click or tap the button below." +msgstr "要将 RaspAP 重置为初始配置,请单击或点击下面的按钮。" + +msgid "Custom files for optional components such as Ad Blocking, WireGuard or OpenVPN will remain on the system." +msgstr "广告拦截、WireGuard 或 OpenVPN 等可选组件的自定义文件将保留在系统中。" + +msgid "Perform reset" +msgstr "执行重置" + +msgid "Restores all access point (AP) service settings to their default values. This applies to hostapd, dhcpcd and dnsmasq." +msgstr "将所有接入点 (AP) 服务设置恢复为默认值。这适用于 hostapd、dhcpcd 和 dnsmasq。" + msgid "Theme settings" msgstr "主题设置" msgid "Select a theme" msgstr "选择一个主题" +msgid "Color" +msgstr "颜色" + +msgid "Enable this option for resizable, drag and drop widgets. Best for large displays." +msgstr "启用此选项可调整拖放部件的大小。最适合大型显示器。" + +msgid "Dynamic widgets" +msgstr "动态部件" + +msgid "Tools" +msgstr "工具" + +msgid "System tools" +msgstr "系统工具" + +msgid "To generate a system debug log, click or tap the button below." +msgstr "要生成系统调试日志,请单击或点击下面的按钮。" + +msgid "Debug log information contains the RaspAP version, current state and configuration of AP related services, installed system packages, Linux kernel version and networking details. No passwords or other sensitive data are included." +msgstr "调试日志信息包含 RaspAP 版本、AP 相关服务的当前状态和配置、已安装的系统软件包、Linux 内核版本和网络详情。不包括密码或其他敏感数据。" + +msgid "Generate debug log" +msgstr "生成调试日志" + +msgid "Debug log generation in progress..." +msgstr "调试日志生成中..." + +msgid "Diagnostic log size limit (KB)" +msgstr "诊断日志大小限制(KB)" + +msgid "Changing log limit size to %s KB" +msgstr "将日志限制大小更改为 %s KB" + +msgid "Information provided by raspap.sysinfo" +msgstr "由 raspap.sysinfo 提供的信息" + +msgid "The following user plugins are available to extend RaspAP's functionality." +msgstr "以下用户插件可用于扩展 RaspAP 的功能。" + +msgid "Choose Details for more information and to install a plugin." +msgstr "选择 \"详细信息\"获取更多信息并安装插件。" + +msgid "Network error" +msgstr "网络错误" + +msgid "Unable to load plugins" +msgstr "无法加载插件" + +msgid "Reload" +msgstr "重新加载" + +msgid "and try again" +msgstr "再试一次" + +msgid "Plugins" +msgstr "插件" + +msgid "Plugin details" +msgstr "插件详情" + +msgid "Name" +msgstr "文本名称" + +msgid "Version" +msgstr "版本" + +msgid "Description" +msgstr "说明" + +msgid "Plugin source" +msgstr "插件来源" + +msgid "Author" +msgstr "作者" + +msgid "License" +msgstr "许可证" + +msgid "Language locale" +msgstr "语言" + +msgid "Configuration files" +msgstr "配置文件" + +msgid "Dependencies" +msgstr "依赖关系" + +msgid "Permissions" +msgstr "权限" + +msgid "Non-privileged users" +msgstr "非特权用户" + +msgid "Install now" +msgstr "立即安装" + +msgid "Installing plugin" +msgstr "安装插件" + +msgid "Plugin installation in progress..." +msgstr "插件安装中..." + +msgid "Plugin install completed." +msgstr "插件安装完成。" + +msgid "Details" +msgstr "详细信息" + +msgid "Installed" +msgstr "已安装" + +msgid "Alert messages" +msgstr "警报信息" + +msgid "Alert close timeout (milliseconds)" +msgstr "警报关闭超时(毫秒)" + +msgid "Automatically close alerts after a specified timeout" +msgstr "在指定超时后自动关闭警报" + +msgid "To inspect adapters attached to this device, click or tap the button below." +msgstr "要检查连接到此设备的适配器,请单击或点击下面的按钮。" + +msgid "The adapter inspection tool returns details about external WLAN devices including drivers, supported modes and so on." +msgstr "适配器检查工具返回外部 WLAN 设备的详细信息,包括驱动程序、支持的模式等。" + +msgid "Choose a network interface to inspect" +msgstr "选择要检查的网络接口" + +msgid "Select an interface..." +msgstr "选择接口..." + +msgid "Adapter health check" +msgstr "适配器健康检查" + +msgid "Inspect adapters" +msgstr "检查适配器" + +msgid "Theme" +msgstr "主题" + #: includes/data_usage.php msgid "Data usage" msgstr "数据使用量" @@ -632,6 +1496,66 @@ msgstr "正尝试启动openvpn" msgid "Attempting to stop openvpn" msgstr "正尝试停止openvpn" +msgid "Configurations" +msgstr "配置" + +msgid "Currently available OpenVPN client configurations are displayed below." +msgstr "当前可用的 OpenVPN 客户端配置显示如下。" + +msgid "Activating a configuration will restart the openvpn-client service." +msgstr "激活配置将重启openvpn-client服务。" + +msgid "Delete OpenVPN client" +msgstr "删除 OpenVPN 客户端" + +msgid "Delete client configuration? This cannot be undone." +msgstr "删除客户端配置?无法撤销。" + +msgid "Activate OpenVPN client" +msgstr "激活 OpenVPN 客户端" + +msgid "Activate client configuration? This will restart the openvpn-client service." +msgstr "激活客户端配置?这将重启 openvpn-client 服务。" + +msgid "Activate" +msgstr "激活" + +msgid "Cancel" +msgstr "取消" + +msgid "Enable this option to log openvpn activity." +msgstr "启用此选项可记录openvpn活动。" + +msgid "Authentification Method" +msgstr "验证方法" + +msgid "Username and password" +msgstr "用户名和密码" + +msgid "Certificates" +msgstr "认证" + +msgid "Enter username and password" +msgstr "输入用户名和密码" + +msgid "Certificates in the configuration file" +msgstr "配置文件中的证书" + +msgid "RaspAP supports certificates by including them in the configuration file." +msgstr "RaspAP 通过在配置文件中加入证书来支持证书。" + +msgid "Signing certification authority (CA) certificate (e.g. ca.crt): enclosed in <ca> ... </ca> tags." +msgstr "签名认证机构 (CA) 证书(如 ca.crt):由<ca> ...所括弧。 </ca>标记中。" + +msgid "Client certificate (public key) (e.g. client.crt): enclosed in <cert> ... </cert> tags." +msgstr "客户证书(公钥)(如client.crt):由<cert> ...所括弧。 </cert>标记。" + +msgid "Private key of the client certificate (e.g. client.key): enclosed in <key> ... </key> tags." +msgstr "客户端证书的私钥(如client.key):用 ... 标记。" + +msgid "Configuration File" +msgstr "配置文件" + #: includes/torproxy.php msgid "TOR is not running" msgstr "TOR不在运行" @@ -692,6 +1616,9 @@ msgstr "上" msgid "down" msgstr "下" +msgid "Clear log" +msgstr "清除日志" + msgid "adblock" msgstr "广告屏蔽" @@ -734,3 +1661,1077 @@ msgstr "统计" msgid "Information provided by adblock" msgstr "信息由 adblock 提供" +msgid "Enable custom blocklist" +msgstr "启用自定义屏蔽列表" + +msgid "Define custom hosts to be blocked by entering an IPv4 or IPv6 address followed by any whitespace (spaces or tabs) and the host name." +msgstr "通过输入 IPv4 或 IPv6 地址,然后输入空白(空格或制表符)和主机名,定义要封堵的自定义主机。" + +msgid "IPv4 example: 0.0.0.0 badhost.com" +msgstr "IPv4 示例:0.0.0.0 badhost.com" + +msgid "This option adds an addn-hosts directive to the dnsmasq configuration." +msgstr "该选项为 dnsmasq 配置添加了addn-hosts指令。" + +msgid "Custom blocklist not defined" +msgstr "未定义自定义屏蔽列表" + +msgid "Invalid custom IP address found on line " +msgstr "在行中发现无效的自定义 IP 地址 " + +msgid "Invalid custom host found on line " +msgstr "在行中发现无效的自定义主机 " + +msgid "Tunnel settings" +msgstr "隧道设置" + +msgid "Configuration Method" +msgstr "配置方法" + +msgid "Upload file" +msgstr "上传文件" + +msgid "Create manually" +msgstr "手动创建" + +msgid "Upload a WireGuard config" +msgstr "上传 WireGuard 配置" + +msgid "This option uploads and installs an existing WireGuard .conf file on this device." +msgstr "此选项上传并在此设备上安装现有的 WireGuard.conf文件。" + +msgid "Apply iptables rules to the selected interface" +msgstr "对选定接口应用 iptables 规则" + +msgid "Recommended if you wish to forward network traffic from the wg0 interface to clients connected on a desired interface. The active AP interface is the default." +msgstr "如果希望将 wg0 接口上的网络流量转发给连接到所需接口上的客户端,建议使用此文本。默认为活动 AP 接口。" + +msgid "This option adds iptables Postup and PostDown rules for the interface selected below." +msgstr "该选项为下面选择的接口添加iptables PostupPostDown规则。" + +msgid "Select WireGuard configuration file (.conf)" +msgstr "选择 WireGuard 配置文件 (.conf)" + +msgid "Create a local WireGuard config" +msgstr "创建本地 WireGuard 配置" + +msgid "Enable server" +msgstr "启用服务器" + +msgid "Enable this option to secure network traffic by creating an encrypted tunnel between RaspAP and configured peers." +msgstr "启用该选项可在 RaspAP 和配置的对等设备之间创建加密隧道,从而确保网络通信安全。" + +msgid "This setting generates a new WireGuard .conf file on this device." +msgstr "此设置将在此设备上生成一个新的 WireGuard.conf文件。" + +msgid "Local public key" +msgstr "本地公钥" + +msgid "Local Port" +msgstr "本地端口" + +msgid "IP Address" +msgstr "IP 地址" + +msgid "DNS" +msgstr "DNS" + +msgid "Peer" +msgstr "同级" + +msgid "Enable peer" +msgstr "启用同行" + +msgid "Enable this option to encrypt traffic by creating a tunnel between RaspAP and this peer." +msgstr "启用此选项可通过在 RaspAP 和该对等设备之间创建隧道来加密流量。" + +msgid "This option adds client.conf to the WireGuard configuration." +msgstr "该选项将client.conf添加到 WireGuard 配置中。" + +msgid "Peer public key" +msgstr "对等公钥" + +msgid "Endpoint address" +msgstr "端点地址" + +msgid "Allowed IPs" +msgstr "允许的 IP" + +msgid "Persistent keepalive" +msgstr "持续保持" + +msgid "Enable this option to display an updated wg-quick debug log." +msgstr "启用此选项可显示更新的wg-quick调试日志。" + +msgid "WireGuard debug log updated" +msgstr "更新了 WireGuard 调试日志" + +msgid "Scan this QR code with your client to connect to this tunnel" +msgstr "用客户端扫描此二维码,连接到此隧道" + +msgid "or download the client.conf file to your device." +msgstr "或下载client.conf文件到您的设备。" + +msgid "Download" +msgstr "下载" + +msgid "Start WireGuard" +msgstr "启动 WireGuard" + +msgid "Stop WireGuard" +msgstr "停止 WireGuard" + +msgid "Information provided by wireguard" +msgstr "信息由 wireguard 提供" + +msgid "Attempting to start WireGuard" +msgstr "试图启动 WireGuard" + +msgid "Attempting to stop WireGuard" +msgstr "试图停止 WireGuard" + +msgid "WireGuard configuration updated successfully" +msgstr "成功更新 WireGuard 配置" + +msgid "WireGuard configuration failed to be updated" +msgstr "WireGuard 配置更新失败" + +msgid "Enable kill switch" +msgstr "启用锁定开关" + +msgid "This option adds iptables PostUp and PreDown rules for the configured interface." +msgstr "该选项为配置的接口添加iptables PostUpPreDown规则。" + +msgid "Recommended if you wish to prevent the flow of unencrypted packets through non-WireGuard interfaces." +msgstr "如果希望防止未加密数据包流经非 WireGuard 接口,建议使用此文本。" + +msgid "iptables rules added to WireGuard configuration" +msgstr "在 WireGuard 配置中添加了 iptables 规则" + +msgid "Existing iptables rules found in WireGuard configuration - not added" +msgstr "在 WireGuard 配置中发现的现有 iptables 规则 - 未添加" + +msgid "Currently available WireGuard file configurations are displayed below." +msgstr "当前可用的 WireGuard 文件配置显示如下。" + +msgid "Activating a configuration will restart the wg-quick service." +msgstr "激活配置将重启wg-quick服务。" + +msgid "Client Firewall" +msgstr "客户端防火墙" + +msgid "Firewall is ENABLED" +msgstr "防火墙已启用" + +msgid "Firewall is OFF" +msgstr "防火墙关闭" + +msgid "The default firewall will only allow outgoing and already established traffic." +msgstr "默认防火墙只允许传出和已建立的流量。" + +msgid "No incoming UDP traffic is allowed." +msgstr "不允许输入 UDP 流量。" + +msgid "There are no restrictions for the access point %s." +msgstr "接入点没有限制 %s。" + +msgid "Exception: Service" +msgstr "异常:服务" + +msgid "allow SSH access on port 22" +msgstr "允许 SSH 访问 22 端口" + +msgid "allow access to the RaspAP GUI on port 80 or 443" +msgstr "允许通过 80 或 443 端口访问 RaspAP GUI" + +msgid "Allow incoming connections for some services from the internet side." +msgstr "允许从互联网端传入某些服务的连接。" + +msgid "Exception: network device" +msgstr "异常:网络设备" + +msgid "Exclude device(s)" +msgstr "排除设备" + +msgid "Exclude the given network device(s) (separated by a blank or comma) from firewall rules." +msgstr "从防火墙规则中排除给定的网络设备(用空格或逗号分隔)。" + +msgid "Current client devices: %s" +msgstr "当前客户端设备: %s" + +msgid "The access point %s is per default excluded." +msgstr "接入点 %s默认排除在外。" + +msgid "Exception: IP-Address" +msgstr "异常:IP 地址" + +msgid "Allow incoming connections from" +msgstr "允许来自" + +msgid "For the given IP-addresses (separated by a blank or comma) the incoming connection (via TCP and UDP) is accepted." +msgstr "对于给定的 IP 地址(用空格或逗号分隔),接受传入连接(通过 TCP 和 UDP)。" + +msgid "This is required for an OpenVPN via UDP or Wireguard connection." +msgstr "通过 UDP 或 Wireguard 连接 OpenVPN 时需要使用此文本。" + +msgid "The list of configured VPN server IP addresses: %s" +msgstr "已配置的 VPN 服务器 IP 地址列表: %s" + +msgid "Disable Firewall" +msgstr "禁用防火墙" + +msgid "Enable Firewall" +msgstr "启用防火墙" + +msgid "Changing the firewall status may disrupt or allow incoming traffic. Choose Proceed to continue." +msgstr "更改防火墙状态可能会中断或允许传入流量。选择继续。" + +msgid "Proceed" +msgstr "继续" + +msgid "Apply changes" +msgstr "应用更改" + +msgid "Dynamic DNS" +msgstr "动态 DNS" + +msgid "Service provider" +msgstr "服务提供商" + +msgid "Select a Dynamic DNS service supported by ddclient from the list below. Selecting a known service provider will populate the protocol and server fields. You may also configure the service manually." +msgstr "从以下列表中选择ddclient支持的动态 DNS 服务。选择已知的服务提供商将填充协议服务器字段。您也可以手动配置服务。" + +msgid "Method to obtain IP" +msgstr "获取 IP 的方法" + +msgid "Select the method used by ddclient to obtain an IP address. This value is specified in the -use option." +msgstr "选择ddclient用于获取 IP 地址的方法。该值在-use选项中指定。" + +msgid "Discovery page on the web" +msgstr "网页上的发现页面" + +msgid "Network interface" +msgstr "网络接口" + +msgid "Network address" +msgstr "网络地址" + +msgid "Firewall status page" +msgstr "防火墙状态页面" + +msgid "External command" +msgstr "外部命令" + +msgid "Web address" +msgstr "网址" + +msgid "Firewall" +msgstr "防火墙" + +msgid "Command" +msgstr "指令" + +msgid "Example: 192.168.1.254/status.htm." +msgstr "Example:192.168.1.254/status.htm。" + +msgid "Example: /usr/local/bin/get-ip." +msgstr "示例:/usr/local/bin/get-ip:/usr/local/bin/get-ip。" + +msgid "Domain" +msgstr "域" + +msgid "Enable SSL" +msgstr "启用 SSL" + +msgid "Use an encrypted SSL connection for updates. Not supported by all providers." +msgstr "使用加密 SSL 连接进行更新。并非所有提供商都支持。" + +msgid "Value specified in milliseconds (ms). Default is 300." +msgstr "以毫秒(ms)为单位指定的值。默认值为 300。" + +msgid "Use the Generate log button to output detailed ddclient daemon debug info" +msgstr "使用生成日志按钮输出详细的ddclient 守护进程调试信息" + +msgid "Generate log" +msgstr "生成日志" + +msgid "Information provided by ddclient" +msgstr "由 ddclient 提供的信息" + +msgid "Start Dynamic DNS" +msgstr "启动动态 DNS" + +msgid "Stop Dynamic DNS" +msgstr "停止动态 DNS" + +msgid "Restart Dynamic DNS" +msgstr "重启动态 DNS" + +msgid "Account details" +msgstr "账户详细信息" + +msgid "My account" +msgstr "我的账户" + +msgid "Server location" +msgstr "服务器位置" + +msgid "Choosing Save settings will connect to the selected country." +msgstr "选择保存设置将连接到所选国家。" + +msgid "Choosing Connect %s will connect to a recommended server." +msgstr "选择连接 %s将连接到推荐的服务器。" + +msgid "Select a country from the server location list" +msgstr "从服务器位置列表中选择一个国家" + +msgid "Select a country..." +msgstr "选择国家..." + +msgid "Account information not available from %s's Linux CLI." +msgstr "%s的 Linux CLI 无法提供账户信息。" + +msgid "Attempting to connect to %s" +msgstr "尝试连接 %s" + +msgid "Attempting to connect VPN provider" +msgstr "尝试连接 VPN 提供商" + +msgid "Attempting to disconnect VPN provider" +msgstr "试图断开 VPN 提供商连接" + +msgid "Expected %s binary not found at: %s" +msgstr "未找到预期的 %s 二进制文件: %s" + +msgid "Visit the installation instructions for %s's Linux CLI." +msgstr "请访问 %s的 Linux CLI安装说明。" + +msgid "Unable to execute %s binary found at: %s" +msgstr "无法执行 %s 二进制文件: %s" + +msgid "Check that binary is executable and permissions exist in raspap.sudoers" +msgstr "检查二进制文件是否可执行,权限是否存在于 raspap.sudoers 中。" + +msgid "Installed Linux CLI: %s" +msgstr "已安装 Linux CLI: %s" + +msgid "Current %s connection status is displayed below." +msgstr "当前 %s连接状态显示在下方。" + +msgid "Information provided by %s" +msgstr "信息由 %s提供" + +msgid "Connect %s" +msgstr "连接 %s" + +msgid "Disconnect %s" +msgstr "断开 %s" + +msgid "About" +msgstr "关于" + +msgid "Insiders" +msgstr "内部人员" + +msgid "Contributing" +msgstr "贡献" + +msgid "Check for update" +msgstr "检查更新" + +msgid "New release check in progress..." +msgstr "新版本检查中..." + +msgid "A new release is available: Version" +msgstr "新版本发布:版本" + +msgid "Installed version is the latest release." +msgstr "安装版本为最新版本。" + +msgid "GitHub authentication" +msgstr "GitHub 认证" + +msgid "Updating Insiders requires GitHub authentication." +msgstr "更新 Insiders 需要 GitHub 认证。" + +msgid "Your credentials will be sent to GitHub securely with SSL. However, use caution if your RaspAP install is on a WLAN shared by untrusted users." +msgstr "您的证书将通过 SSL 安全发送到 GitHub。但是,如果您的 RaspAP 安装在由不信任用户共享的 WLAN 上,请谨慎操作。" + +msgid "Personal Access Token" +msgstr "个人访问令牌" + +msgid "Please provide a valid token." +msgstr "请提供有效令牌。" + +msgid "Perform update" +msgstr "执行更新" + +msgid "Update in progress" +msgstr "更新中" + +msgid "Application is being updated..." +msgstr "应用程序正在更新..." + +msgid "Configuring update" +msgstr "配置更新" + +msgid "Updating sources" +msgstr "更新来源" + +msgid "Installing package updates" +msgstr "安装软件包更新" + +msgid "Downloading latest files" +msgstr "下载最新文件" + +msgid "Installing application" +msgstr "安装应用程序" + +msgid "Update complete" +msgstr "更新完成" + +msgid "An error occurred. Check the log at /tmp/raspap_install.log" +msgstr "发生错误。检查/tmp/raspap_install.log中的日志" + +msgid "RaspAP is a co-creation of %1$s and %2$s with the contributions of our %3$s and %4$s. Learn more about joining the project as a %5$s, %6$s or %7$s with immediate access to %8$s available to %9$s." +msgstr "RaspAP 由 %1$s 和 %2$s 共同创建,并得到了 %3$s 和 %4$s的贡献。欲了解更多有关加入该项目的信息,请访问 %5$s, %6$s 或 %7$s ,可立即访问 %8$s , %9$s。" + +msgid "developer community" +msgstr "开发者社区" + +msgid "language translators" +msgstr "语言翻译" + +msgid "code contributor" +msgstr "代码贡献者" + +msgid "translator" +msgstr "译者" + +msgid "financial sponsor" +msgstr "财务赞助商" + +msgid "exclusive features" +msgstr "专属功能" + +msgid "RaspAP Exception" +msgstr "RaspAP 异常" + +msgid "An exception occurred" +msgstr "出现异常" + +msgid "RestAPI" +msgstr "RestAPI" + +msgid "RestAPI settings" +msgstr "RestAPI 设置" + +msgid "Start RestAPI service" +msgstr "启动 RestAPI 服务" + +msgid "Stop RestAPI service" +msgstr "停止 RestAPI 服务" + +msgid "API Key" +msgstr "API 密钥" + +msgid "Saving API key" +msgstr "保存 API 密钥" + +msgid "RestAPI status" +msgstr "RestAPI 状态" + +msgid "Current restapi.service status is displayed below." +msgstr "当前restapi.service状态显示如下。" + +msgid "RestAPI docs are accessible here%s" +msgstr "可在此处 访问 RestAPI 文档%s" + +msgid "Restarting restapi.service" +msgstr "重启 restapi.service" + +msgid "Information provided by restapi.service" +msgstr "由 restapi.service 提供的信息" + +msgid "Session Expired" +msgstr "会话已过期" + +msgid "Your session has expired. Please login to continue." +msgstr "您的会话已过期。请登录以继续。" + +msgid "Login" +msgstr "登录" + +msgid "Administrator login" +msgstr "管理员登录" + +msgid "Forgot password" +msgstr "忘记密码" + +msgid "Login failed" +msgstr "登录失败" + +msgid "NTP Server" +msgstr "NTP 服务器" + +msgid "NTP Server settings" +msgstr "NTP 服务器设置" + +msgid "NTP daemon" +msgstr "NTP 守护进程" + +msgid "Synchronized time" +msgstr "同步时间" + +msgid "NTP servers" +msgstr "NTP 服务器" + +msgid "Add an NTP server" +msgstr "添加 NTP 服务器" + +msgid "Start NTP service" +msgstr "启动 NTP 服务" + +msgid "Stop NTP service" +msgstr "停止 NTP 服务" + +msgid "Edit mode" +msgstr "编辑模式" + +msgid "Use the Edit mode toggle to manually edit the current ntp.config configuration." +msgstr "使用编辑模式切换键手动编辑当前的ntp.config 配置。" + +msgid "Specify a public NTP server or a private one on your local network. IPv4 and IPv6 address, or a fully qualified domain name (FQDN) are acceptable values." +msgstr "指定公共 NTP 服务器或本地网络中的私有 NTP 服务器。IPv4 和 IPv6 地址或完全合格域名 (FQDN) 均可接受。" + +msgid "Public NTP servers supporting Network Time Security (NTS) may be specified with the nts suffix." +msgstr "可使用后缀nts指定支持网络时间安全(NTS)的公共 NTP 服务器。" + +msgid "Examples of valid server entries include %s, %s and %s." +msgstr "有效服务器条目示例包括 %s, %s%s。" + +msgid "Current ntpq peer status is displayed below. An asterisk (*) indicates the preferred server." +msgstr "当前ntpq 对等状态显示如下。星号(*)表示首选服务器。" + +msgid "NTP configuration cannot be empty" +msgstr "NTP 配置不能为空" + +msgid "Restarting ntpd.service" +msgstr "重启 ntpd.service" + +msgid "Please enter a valid NTP server" +msgstr "请输入有效的 NTP 服务器" + +msgid "Attempting to start ntp.service" +msgstr "试图启动 ntp.service" + +msgid "Attempting to stop ntp.service" +msgstr "试图停止 ntp.service" + +msgid "NTP configuration not found at %s" +msgstr "未在 %s找到 NTP 配置" + +msgid "NTP configuration updated" +msgstr "更新了 NTP 配置" + +msgid "Advertising device as a Tailscale exit node" +msgstr "将设备宣传为 Tailscale 退出节点" + +msgid "Attempting to optimize UDP throughput" +msgstr "尝试优化 UDP 吞吐量" + +msgid "Kernel transport layer offloads enabled for UDP" +msgstr "为 UDP 启用了内核传输层卸载" + +msgid "Failed to enable kernel transport layer offloads for UDP" +msgstr "启用 UDP 内核传输层卸载失败" + +msgid "Attempting to set tailscale up" +msgstr "尝试设置尾标" + +msgid "Attempting to set tailscale down" +msgstr "尝试向下设置尾标" + +msgid "Attempting to disconnect from tailscale" +msgstr "试图断开与 tailscale 的连接" + +msgid "Disconnected from tailscale and expired node key" +msgstr "与 tailscale 断开连接,节点密钥过期" + +msgid "Unable to disconnect from tailscale" +msgstr "无法断开与 tailscale 的连接" + +msgid "Expected tailscale binary not found at: %" +msgstr "未找到预期的尾标二进制文件:%" + +msgid "A Tailscale VPN exit node extension for RaspAP" +msgstr "RaspAP 的 Tailscale VPN 出口节点扩展" + +msgid "Unable to retrieve Tailscale login. Choose %s to continue." +msgstr "无法检索 Tailscale 登录。选择 %s继续。" + +msgid "Start Tailscale" +msgstr "开始尾标" + +msgid "Stop Tailscale" +msgstr "停止尾标" + +msgid "Next" +msgstr "下一页" + +msgid "Device approved and activated as a Tailscale exit node" +msgstr "设备被批准并激活为 Tailscale 出口节点" + +msgid "Not connected: Login required." +msgstr "未连接:需要登录。" + +msgid "Tailscale VPN" +msgstr "尾标 VPN" + +msgid "Exit node activated" +msgstr "已激活退出节点" + +msgid "The device %s is connected with the address %s and offers an exit node." +msgstr "设备 %s与地址 %s并提供退出节点。" + +msgid "See the %s on how to use this exit node with your devices." +msgstr "有关如何在设备中使用此退出节点,请参阅 %s。" + +msgid "Allow exit node" +msgstr "允许退出节点" + +msgid "The device %s is pending approval as an exit node." +msgstr "设备 %s正等待批准成为退出节点。" + +msgid "Locate the %s Exit Node badge in the machines list." +msgstr "在机器列表中找到 %s退出节点徽章。" + +msgid "Open Tailscale Machines" +msgstr "开放式尾规模机器" + +msgid "To allow this device as an exit node, choose Open Tailscale Machines." +msgstr "要允许此设备作为退出节点,请选择 \"打开尾标机\"。" + +msgid "From the %s icon menu of the exit node, open the %s panel." +msgstr "从退出节点的 %s 图标菜单中,打开 %s 面板。" + +msgid "Edit route settings" +msgstr "编辑路由设置" + +msgid "Login to Tailscale" +msgstr "登录 Tailscale" + +msgid "To connect device %s to your tailnet, choose %s." +msgstr "要将设备 %s 连接到尾网,请选择 %s。" + +msgid "After logging in, choose Next to continue." +msgstr "登录后,选择 \"下一步\"继续。" + +msgid "Configure exit node" +msgstr "配置退出节点" + +msgid "The device %s is connected to your tailnet with the address %s." +msgstr "设备 %s连接到您的尾网,地址为 %s。" + +msgid "By default, Tailscale only routes traffic between the devices on which it's been installed. You can also route all your public internet traffic by configuring a device on your network as a exit node" +msgstr "默认情况下,Tailscale 只路由安装了它的设备之间的流量。你也可以将网络上的设备配置为出口节点,从而路由所有公共互联网流量。" + +msgid "When you route all traffic through an exit node, you're effectively using default routes (0.0.0.0/0, ::/0), similar to how you would if you were using a typical VPN." +msgstr "当你通过出口节点路由所有流量时,你实际上是在使用默认路由(0.0.0.0/0、::/0),类似于使用典型的 VPN。" + +msgid "You have the option of configuring this device as an exit node, or using another exit node in your tailnet." +msgstr "您可以选择将此设备配置为出口节点,或使用尾网中的其他出口节点。" + +msgid "Select an existing exit node on your tailnet" +msgstr "选择尾网上现有的退出节点" + +msgid "This is a typical configuration if you're using this device as a VPN travel router, for example." +msgstr "如果将此设备用作 VPN 旅行路由器,这是一种典型的配置。" + +msgid "Configure this device as a new exit node" +msgstr "将此设备配置为新的退出节点" + +msgid "By configuring this device as an exit node, public internet traffic from devices connected in your tailnet will be routed through it." +msgstr "将此设备配置为出口节点后,来自尾网中连接的设备的公共互联网流量将通过它路由。" + +msgid "For security reasons, you must opt in to enable exit node functionality. The first step is to advertise %s as an exit node in your tailnet. In the next step, you'll allow this device to be an exit node." +msgstr "出于安全考虑,您必须选择启用退出节点功能。第一步是将 %s作为尾网的出口节点。下一步,您将允许此设备成为出口节点。" + +msgid "Advertise %s as an exit node" +msgstr "广告 %s作为退出节点" + +msgid "This effectively configures Tailscale as a VPN to mask your real location, access region-restricted content, or enhance privacy when connecting from untrusted networks." +msgstr "这可有效地将 Tailscale 配置为 VPN,以掩盖你的真实位置、访问受地区限制的内容,或在从不受信任的网络连接时加强隐私保护。" + +msgid "This option lets Tailscale know your device is ready to route traffic." +msgstr "该选项可让 Tailscale 知道你的设备已准备好路由流量。" + +msgid "Recommended for Tailscale exit nodes with Linux 6.2 or later kernels, this uses UDP generic receive offload (GRO) forwarding to reduce CPU overhead." +msgstr "建议使用 Linux 6.2 或更高版本内核的 Tailscale 退出节点采用 UDP 通用接收卸载(GRO)转发,以减少 CPU 开销。" + +msgid "This option enables transport layer offloads for better performance." +msgstr "该选项可启用传输层卸载,以提高性能。" + +msgid "Select an exit node" +msgstr "选择退出节点" + +msgid "To use %s as a VPN gateway, configure Tailscale to use an exit node. Tailscale's suggested node is indicated with a star." +msgstr "要将 %s作为 VPN 网关,请将 Tailscale 配置为使用出口节点。Tailscale 建议的节点用星号表示。" + +msgid "Advertise a subnet route for the active %s AP interface" +msgstr "为活动的 %sAP 接口的子网路由" + +msgid "Subnet routes let you extend your Tailscale network (known as a tailnet) to include devices that don't or can't run the Tailscale client." +msgstr "子网路由可让你扩展你的 Tailscale 网络(称为 tailnet),以包括不运行或不能运行 Tailscale 客户端的设备。" + +msgid "A subnet route acts as a gateway between your tailnet and a physical subnet. The subnet of the active AP interface is preconfigured below; edit if necessary." +msgstr "子网路由是尾网与物理子网之间的网关。活动 AP 接口的子网预配置如下;如有必要,可进行编辑。" + +msgid "Route LAN traffic through the exit node." +msgstr "通过出口节点路由 LAN 流量。" + +msgid "This will direct all LAN traffic to go through your exit node only." +msgstr "这将引导所有局域网流量只通过你的出口节点。" + +msgid "Choose Next to configure %s to use the selected exit node with these options." +msgstr "选择 \"下一步 \"配置 %s以使用所选的退出节点和这些选项。" + +msgid "No exit nodes found on your tailnet. Choose Back to continue." +msgstr "在您的尾网上未找到退出节点。选择 \"返回 \"继续。" + +msgid "Using exit node" +msgstr "使用退出节点" + +msgid "The device %s is configured to use exit node %s. It has the Tailscale MagicDNS address %s." +msgstr "设备 %s配置为使用退出节点 %s.它具有 Tailscale MagicDNS 地址 %s。" + +msgid "Choose Save settings to continue." +msgstr "选择 \"保存设置 \"继续。" + +msgid "Choose Next to continue." +msgstr "选择 \"下一步\"继续。" + +msgid "Tailnet status" +msgstr "尾网状态" + +msgid "Current tailnet status is displayed below." +msgstr "当前尾网状态显示如下。" + +msgid "Use Tailscale DNS settings (default)." +msgstr "使用 Tailscale DNS 设置(默认)。" + +msgid "Uncheck to use local DNS. This sets --accept-dns=false." +msgstr "取消选中以使用本地 DNS。这将设置--accept-dns=false。" + +msgid "Do not use Tailscale subnets (default on Linux)." +msgstr "不使用 Tailscale 子网(Linux 默认)。" + +msgid "If subnet routes exist for your tailnet, you can route your device's traffic to a subnet router. Enabling this sets --accept-routes=true." +msgstr "如果尾网存在子网路由,则可以将设备流量路由至子网路由器。启用此功能可设置--accept-routes=true。" + +msgid "If keys expire for a device, connections to/from the given endpoint will stop working." +msgstr "如果设备的密钥过期,与给定端点之间的连接将停止工作。" + +msgid "This option uses --force-reauth to renew the keys for this device." +msgstr "该选项使用--force-reauth来更新该设备的密钥。" + +msgid "Start capture" +msgstr "开始捕获" + +msgid "Stop capture" +msgstr "停止捕获" + +msgid "Capture files" +msgstr "捕获文件" + +msgid "Capture interface" +msgstr "捕获界面" + +msgid "Output file" +msgstr "输出文件" + +msgid "Path where capture file will be saved (.pcap format)" +msgstr "保存捕获文件的路径(.pcap 格式)" + +msgid "File will be saved with .pcap extension" +msgstr "文件将以 .pcap 扩展名保存" + +msgid "Capture filter (BPF syntax)" +msgstr "捕获过滤器(BPF 语法)" + +msgid "Berkeley Packet Filter syntax. Leave empty to capture all traffic." +msgstr "伯克利包过滤语法。留空表示捕获所有流量。" + +msgid "Examples: port 80, host 192.168.1.1, tcp and not port 22" +msgstr "示例:端口 80主机 192.168.1.1tcp,而非端口 22" + +msgid "Capture limits" +msgstr "捕获限制" + +msgid "Packet count limit" +msgstr "数据包数量限制" + +msgid "Stop capture after this many packets. Leave empty for unlimited." +msgstr "捕获这么多数据包后停止捕获。留空表示无限制。" + +msgid "Duration limit (seconds)" +msgstr "持续时间限制(秒)" + +msgid "Stop capture after this many seconds. Leave empty for unlimited." +msgstr "几秒后停止捕捉。留空表示无限制。" + +msgid "Ring buffer settings" +msgstr "环形缓冲区设置" + +msgid "File size (KB)" +msgstr "文件大小(KB)" + +msgid "Create new file when this size is reached. Leave empty to disable." +msgstr "达到此大小时创建新文件。留空表示禁用。" + +msgid "10000 = 10 MB per file" +msgstr "10000 = 每个文件 10 MB" + +msgid "Number of files" +msgstr "文件数量" + +msgid "Maximum number of ring buffer files to keep. Oldest files are deleted." +msgstr "保留的最大环形缓冲区文件数。最旧的文件将被删除。" + +msgid "Advanced options" +msgstr "高级选项" + +msgid "Snapshot length (bytes)" +msgstr "快照长度(字节)" + +msgid "Limit the amount of data captured per packet. Leave empty for full packets." +msgstr "限制每个数据包捕获的数据量。数据包满时留空。" + +msgid "96 bytes captures headers only, reduces file size" +msgstr "96 字节,仅捕获标题,减小文件大小" + +msgid "Promiscuous mode" +msgstr "杂交模式" + +msgid "Capture all packets on the network segment, not just those destined for this interface" +msgstr "捕获网段上的所有数据包,而不仅仅是以该接口为目的地的数据包" + +msgid "Quick filter presets" +msgstr "快速滤镜预设" + +msgid "Capture files generated by tshark are displayed below." +msgstr "由tshark生成的捕获文件显示如下。" + +msgid "No capture files found in /tmp directory" +msgstr "在 /tmp 目录中未发现捕获文件" + +msgid "Filename" +msgstr "文件名" + +msgid "Size" +msgstr "大小" + +msgid "Modified" +msgstr "已修改" + +msgid "Actions" +msgstr "行动" + +msgid "Download file" +msgstr "下载文件" + +msgid "Delete file" +msgstr "删除文件" + +msgid "Confirm deletion" +msgstr "确认删除" + +msgid "Are you sure you want to delete this file?" +msgstr "您确定要删除此文件吗?" + +msgid "All Traffic" +msgstr "所有流量" + +msgid "HTTP/HTTPS" +msgstr "HTTP/HTTPS" + +msgid "ICMP (Ping)" +msgstr "ICMP(Ping)" + +msgid "SSH" +msgstr "SSH" + +msgid "Exclude SSH" +msgstr "排除 SSH" + +msgid "A Wireshark (TShark) CLI packet capture for RaspAP" +msgstr "RaspAP 的 Wireshark (TShark) CLI 数据包捕获" + +msgid "Information provided by tshark" +msgstr "信息由 tshark 提供" + +msgid "Total: %d file(s), %s" +msgstr "共计: %d 文件, %s" + +msgid "Captive portal" +msgstr "自带门户" + +msgid "Gateway interface" +msgstr "网关接口" + +msgid "Gateway name" +msgstr "网关名称" + +msgid "Gateway address" +msgstr "网关地址" + +msgid "Gateway port" +msgstr "网关端口" + +msgid "Defaults to the active AP interface, typically wlan0" +msgstr "默认为活动 AP 接口,通常为wlan0" + +msgid "Auto-detected from gateway interface if not specified" +msgstr "如果未指定,则从网关接口自动检测" + +msgid "Start portal" +msgstr "起始门户" + +msgid "Stop portal" +msgstr "停止门户" + +msgid "Information provided by nodogsplash" +msgstr "信息由 nodogsplash 提供" + +msgid "Stop portal service" +msgstr "停止门户服务" + +msgid "Start portal service" +msgstr "启动门户服务" + +msgid "Changing the portal service will momentarily disrupt client traffic. Choose Proceed to continue." +msgstr "更改门户服务会暂时中断客户端流量。选择 \"继续\"继续。" + +msgid "Interface to be managed by the portal" +msgstr "由门户管理的接口" + +msgid "Name of your gateway (available as \\$gatewayname variable)" +msgstr "网关名称(可作为$gatewayname 变量使用)" + +msgid "IP address of the router. Leave empty for auto-detection" +msgstr "路由器的 IP 地址。留空用于自动检测" + +msgid "Port for Nodogsplash HTTP server" +msgstr "Nodogsplash HTTP 服务器端口" + +msgid "Maximum clients" +msgstr "最大客户数" + +msgid "Session timeout (minutes)" +msgstr "会话超时(分钟)" + +msgid "Pre-auth idle timeout (minutes)" +msgstr "验证前空闲超时(分钟)" + +msgid "Does not include users on the trusted MAC list" +msgstr "不包括受信任 MAC 列表中的用户" + +msgid "Auth idle timeout (minutes)" +msgstr "认证空闲超时(分钟)" + +msgid "Check interval (seconds)" +msgstr "检查间隔(秒)" + +msgid "MAC address control" +msgstr "MAC 地址控制" + +msgid "MAC mechanism" +msgstr "MAC 机制" + +msgid "Blocked MAC list" +msgstr "被阻止的 MAC 列表" + +msgid "Trusted MAC list" +msgstr "可信 MAC 列表" + +msgid "These devices are not subject to authentication or firewall rules" +msgstr "这些设备不受身份验证或防火墙规则的限制" + +msgid "Maximum number of concurrent authenticated users" +msgstr "最大并发认证用户数" + +msgid "Default session length in minutes. 0 = unlimited" +msgstr "默认会话长度(分钟)。0 = 无限制" + +msgid "Time before unauthenticated idle users are removed" +msgstr "删除未认证闲置用户前的时间" + +msgid "Time before authenticated idle users are deauthenticated" +msgstr "已通过身份验证的空闲用户解除身份验证前的时间" + +msgid "How often to check client timeouts" +msgstr "检查客户端超时的频率" + +msgid "Block: blocklisted MACs are blocked. Allow: only allowlisted MACs are allowed" +msgstr "阻止:阻止列表中的 MAC。允许:只允许允许列表中的 MAC" + +msgid "Example: 00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" +msgstr "示例:00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" + +msgid "Comma-separated MAC addresses that bypass authentication entirely" +msgstr "完全绕过验证的逗号分隔 MAC 地址" + +msgid "Block (blocklist mode)" +msgstr "块(块列表模式)" + +msgid "Allow (allowlist mode)" +msgstr "允许(允许列表模式)" + +msgid "Gateway IP range" +msgstr "网关 IP 范围" + +msgid "Default: 0.0.0.0/0 (all addresses)" +msgstr "默认值:0.0.0.0/0(所有地址)" + +msgid "Debug level" +msgstr "调试级别" + +msgid "Firewall settings" +msgstr "防火墙设置" + +msgid "Allow all traffic for authenticated users" +msgstr "允许已验证用户的所有流量" + +msgid "Allow DNS for pre-authenticated users" +msgstr "允许预认证用户使用 DNS" + +msgid "IP range to manage in CIDR notation. Leave empty for all addresses" +msgstr "使用 CIDR 符号管理的 IP 范围。所有地址留空" + +msgid "Amount of logging detail reported by the nodogsplash.service" +msgstr "nodogsplash.service 报告的日志详情数量" + +msgid "0 - Errors only" +msgstr "0 - 仅有错误" + +msgid "1 - Errors, warnings, infos" +msgstr "1 - 错误、警告、信息" + +msgid "2 - Errors, warnings, infos, verbose" +msgstr "2 - 错误、警告、信息、详细说明" + +msgid "3 - Errors, warnings, infos, verbose, debug" +msgstr "3 - 错误、警告、信息、冗长、调试" + +msgid "When enabled, authenticated users have unrestricted access" +msgstr "启用后,通过身份验证的用户可以不受限制地访问" + +msgid "Required for clients to resolve domain names before authentication" +msgstr "要求客户端在验证前解析域名" + +msgid "Portal status" +msgstr "门户状态" + +msgid "Current nodogsplash status is displayed below." +msgstr "当前状态显示如下。" + diff --git a/plugins b/plugins index deb68914..9236df61 160000 --- a/plugins +++ b/plugins @@ -1 +1 @@ -Subproject commit deb689143ece33d37d0dca80fd1a1131a676481e +Subproject commit 9236df61394452239f20042e061a8fdd9eec38e7 diff --git a/src/RaspAP/Localization/LocaleManager.php b/src/RaspAP/Localization/LocaleManager.php new file mode 100755 index 00000000..aa611902 --- /dev/null +++ b/src/RaspAP/Localization/LocaleManager.php @@ -0,0 +1,258 @@ + + * @license https://github.com/raspap/raspap-webgui/blob/master/LICENSE + */ + +namespace RaspAP\Localization; + +class LocaleManager +{ + private string $locale; + private const DEFAULT_LOCALE = 'en_GB.UTF-8'; + private const COOKIE_LIFETIME = 86400 * 30; // 30 days + + /** + * Constructor + */ + public function __construct() + { + $this->locale = self::DEFAULT_LOCALE; + } + + /** + * Get all available locales + * + * @return array Associative array of locale codes to language names + */ + public function getLocales(): array + { + return [ + 'en_GB.UTF-8' => 'English', + 'cs_CZ.UTF-8' => 'Čeština', + 'zh_TW.UTF-8' => '正體中文 (Chinese traditional)', + 'zh_CN.UTF-8' => '简体中文 (Chinese simplified)', + 'da_DK.UTF-8' => 'Dansk', + 'de_DE.UTF-8' => 'Deutsch', + 'es_MX.UTF-8' => 'Español', + 'fi_FI.UTF-8' => 'Finnish', + 'fr_FR.UTF-8' => 'Français', + 'el_GR.UTF-8' => 'Ελληνικά', + 'id_ID.UTF-8' => 'Indonesian', + 'it_IT.UTF-8' => 'Italiano', + 'ja_JP.UTF-8' => '日本語 (Japanese)', + 'ko_KR.UTF-8' => '한국어 (Korean)', + 'nl_NL.UTF-8' => 'Nederlands', + 'pl_PL.UTF-8' => 'Polskie', + 'pt_BR.UTF-8' => 'Português', + 'ru_RU.UTF-8' => 'Русский', + 'ro_RO.UTF-8' => 'Română', + 'sk_SK.UTF-8' => 'Slovenčina', + 'sv_SE.UTF-8' => 'Svenska', + 'tr_TR.UTF-8' => 'Türkçe', + 'vi_VN.UTF-8' => 'Tiếng Việt (Vietnamese)' + ]; + } + + /** + * Get valid locale codes + * + * @return array Array of valid locale codes + */ + public function getValidLocales(): array + { + return array_keys($this->getLocales()); + } + + /** + * Detect browser locale from Accept-Language header + * + * Language detection is performed via the browser. + * Accept-Language returns a list of weighted values with a quality (or 'q') parameter. + * A better method would parse the list of preferred languages and match this with + * the languages supported by our platform. + * + * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 + * @return string Detected locale code + */ + public function detectBrowserLocale(): string + { + if (empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) || strlen($_SERVER['HTTP_ACCEPT_LANGUAGE']) < 2) { + return self::DEFAULT_LOCALE; + } + + $acceptLang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; + $lang = strtolower(substr($acceptLang, 0, 2)); + + if ($lang === 'zh' && strpos($acceptLang, 'zh-TW') === 0) { + return 'zh_TW.UTF-8'; + } + + switch ($lang) { + case 'de': + return 'de_DE.UTF-8'; + case 'fr': + return 'fr_FR.UTF-8'; + case 'it': + return 'it_IT.UTF-8'; + case 'pt': + return 'pt_BR.UTF-8'; + case 'sv': + return 'sv_SE.UTF-8'; + case 'nl': + return 'nl_NL.UTF-8'; + case 'zh': + return 'zh_CN.UTF-8'; + case 'cs': + return 'cs_CZ.UTF-8'; + case 'ru': + return 'ru_RU.UTF-8'; + case 'es': + return 'es_MX.UTF-8'; + case 'fi': + return 'fi_FI.UTF-8'; + case 'da': + return 'da_DK.UTF-8'; + case 'tr': + return 'tr_TR.UTF-8'; + case 'id': + return 'id_ID.UTF-8'; + case 'ko': + return 'ko_KR.UTF-8'; + case 'ja': + return 'ja_JP.UTF-8'; + case 'vi': + return 'vi_VN.UTF-8'; + case 'el': + return 'el_GR.UTF-8'; + case 'pl': + return 'pl_PL.UTF-8'; + case 'sk': + return 'sk_SK.UTF-8'; + default: + return self::DEFAULT_LOCALE; + } + } + + /** + * Validate if a locale code is valid + * + * Uses $validLocales to mitigate OS Command Injection (CWE-78) + * @see Vulnerability Report for JVN #27202136 + * + * @param string $locale Locale code to validate + * @return bool True if valid, false otherwise + */ + public function isValidLocale(string $locale): bool + { + return in_array($locale, $this->getValidLocales(), true); + } + + /** + * Set the current locale + * + * @param string $locale Locale code to set + * @return bool true if locale was set, false if invalid + */ + public function setLocale(string $locale): bool + { + if (!$this->isValidLocale($locale)) { + return false; + } + + $this->locale = $locale; + return true; + } + + /** + * Get the current locale + * + * @return string Current locale code + */ + public function getCurrentLocale(): string + { + return $this->locale; + } + + /** + * Initialize locale + * + * @return void + */ + public function initialize(): void + { + $validLocales = $this->getValidLocales(); + + // Set locale from POST, if provided and valid + if (!empty($_POST['locale']) && in_array($_POST['locale'], $validLocales, true)) { + $_SESSION['locale'] = $_POST['locale']; + $this->setLocaleCookie($_POST['locale']); + } + + // Set locale from cookie or browser detection, if not already set in session + if (empty($_SESSION['locale'])) { + if (isset($_COOKIE['locale']) && in_array($_COOKIE['locale'], $validLocales, true)) { + $_SESSION['locale'] = $_COOKIE['locale']; + } else { + $_SESSION['locale'] = $this->detectBrowserLocale(); + $this->setLocaleCookie($_SESSION['locale']); + } + } + + // Enforce only valid locale values in session + if (!in_array($_SESSION['locale'], $validLocales, true)) { + $_SESSION['locale'] = self::DEFAULT_LOCALE; + $this->setLocaleCookie($_SESSION['locale']); + } + + // Update internal state + $this->locale = $_SESSION['locale']; + } + + /** + * Apply locale settings to the system + * + * Sets environment variables and configures gettext + * + * @return void + */ + public function applyLocale(): void + { + putenv("LANG=" . escapeshellarg($this->locale)); + setlocale(LC_ALL, $this->locale); + + // Use global constants if defined, otherwise use defaults + $localeDomain = defined('LOCALE_DOMAIN') ? LOCALE_DOMAIN : 'messages'; + $localeRoot = defined('LOCALE_ROOT') ? LOCALE_ROOT : 'locale'; + + bindtextdomain($localeDomain, $localeRoot); + bind_textdomain_codeset($localeDomain, 'UTF-8'); + textdomain($localeDomain); + } + + /** + * Set locale cookie + * + * @param string $locale Locale code to store in cookie + * @return void + */ + private function setLocaleCookie(string $locale): void + { + setcookie('locale', $locale, time() + self::COOKIE_LIFETIME, '/', '', false, true); + } + + /** + * Initialize and apply locale in one call + * + * @return void + */ + public function initializeAndApply(): void + { + $this->initialize(); + $this->applyLocale(); + } +} diff --git a/src/RaspAP/Networking/Hotspot/DhcpcdManager.php b/src/RaspAP/Networking/Hotspot/DhcpcdManager.php index f393763f..f4c0052a 100644 --- a/src/RaspAP/Networking/Hotspot/DhcpcdManager.php +++ b/src/RaspAP/Networking/Hotspot/DhcpcdManager.php @@ -28,7 +28,7 @@ class DhcpcdManager * @param bool $wifiAPEnable * @param bool $dualAPEnable * @param StatusMessage $status - * @return string + * @return string */ public function buildConfig( string $ap_iface, @@ -111,6 +111,8 @@ class DhcpcdManager $domain_name_server ); } + + $dhcp_cfg = file_get_contents(SELF::CONF_DEFAULT); $skip_dhcp = false; @@ -133,7 +135,11 @@ class DhcpcdManager $dhcp_cfg = $this->removeIface($dhcp_cfg,'br0'); $dhcp_cfg = $this->removeIface($dhcp_cfg,'uap0'); if (!strpos($dhcp_cfg, 'metric')) { - $dhcp_cfg = preg_replace('/^#\sRaspAP\s'.$ap_iface.'\s.*?(?=(?:\s*^\s*$|\s*nogateway))/ms', $config, $dhcp_cfg, 1); + $pattern = '/^#\sRaspAP\s' . preg_quote($ap_iface, '/') . '\sconfiguration\n' . + '(?:.*\n)*?' . + '(?:\n)*' . + '(?=#\sRaspAP\s|\z)/m'; + $dhcp_cfg = preg_replace($pattern, $config . "\n\n", $dhcp_cfg, 1); } else { $metrics = true; } @@ -193,7 +199,11 @@ class DhcpcdManager $status->addMessage('DHCP configuration for '.$iface.' added.', 'success'); } else { $cfg = join(PHP_EOL, $cfg); - $dhcp_cfg = preg_replace('/^#\sRaspAP\s'.$iface.'\s.*?(?=\s*^\s*$)/ms', $cfg, $dhcp_cfg, 1); + $pattern = '/^#\sRaspAP\s' . preg_quote($iface, '/') . '\sconfiguration\n' . + '(?:.*\n)*?' . + '(?:\n)*' . + '(?=#\sRaspAP\s|\z)/m'; + $dhcp_cfg = preg_replace($pattern, $cfg . "\n\n", $dhcp_cfg, 1); } return $dhcp_cfg; @@ -276,8 +286,8 @@ class DhcpcdManager */ public function remove(string $iface, StatusMessage $status): bool { - $configFile = SELF::CONF_DEFAULT; - $tempFile = SELF::CONF_TMP; + $configFile = SELF::CONF_DEFAULT; + $tempFile = SELF::CONF_TMP; $dhcp_cfg = file_get_contents($configFile); $modified_cfg = preg_replace('/^#\sRaspAP\s'.$iface.'\s.*?(?=\s*^\s*$)([\s]+)/ms', '', $dhcp_cfg, 1); @@ -286,7 +296,7 @@ class DhcpcdManager $cmd = sprintf('sudo cp %s %s', escapeshellarg($tempFile), escapeshellarg($configFile)); exec($cmd, $output, $result); - + if ($result == 0) { $status->addMessage('DHCP configuration for '.$iface.' removed', 'success'); return true; @@ -352,18 +362,29 @@ class DhcpcdManager ]; // merge existing settings with updates + $processed_keys = []; foreach ($existing_config as $line) { $matched = false; foreach ($static_settings as $key => $value) { if (strpos($line, $key) === 0) { $config[] = "$key=$value"; $matched = true; + $processed_keys[] = $key; unset($static_settings[$key]); break; } } if (!$matched && !preg_match('/^interface/', $line)) { - $config[] = $line; + $is_duplicate = false; + foreach ($processed_keys as $processed_key) { + if (strpos($line, $processed_key) === 0) { + $is_duplicate = true; + break; + } + } + if (!$is_duplicate && !in_array($line, $config, true)) { + $config[] = $line; + } } } diff --git a/src/RaspAP/Networking/Hotspot/HostapdManager.php b/src/RaspAP/Networking/Hotspot/HostapdManager.php index c9d0a5ef..6caf56be 100644 --- a/src/RaspAP/Networking/Hotspot/HostapdManager.php +++ b/src/RaspAP/Networking/Hotspot/HostapdManager.php @@ -102,8 +102,11 @@ class HostapdManager if (!empty($config['ieee80211ac']) && strval($config['ieee80211ac']) === '1') { $selected = 'ac'; } - if (!empty($config['ieee80211w']) && strval($config['ieee80211w']) === '2') { - $selected = 'w'; + if (!empty($config['ieee80211ax']) && strval($config['ieee80211ax']) === '1') { + $selected = 'ax'; + } + if (!empty($config['ieee80211be']) && strval($config['ieee80211be']) === '1') { + $selected = 'be'; } return $selected; @@ -151,6 +154,7 @@ class HostapdManager $config[] = 'auth_algs=1'; $wpa = $params['wpa']; + $wpa_numeric = $wpa; $wpa_key_mgmt = 'WPA-PSK'; if ($wpa == 4) { @@ -185,20 +189,42 @@ class HostapdManager $config[] = 'ssid=' . $params['ssid']; $config[] = 'channel=' . $params['channel']; - // choose VHT segment index (fallback only if required) - $vht_freq_idx = ($params['channel'] < RASPI_5GHZ_CHANNEL_MIN) ? 42 : 155; $hwMode = isset($params['hw_mode']) ? $params['hw_mode'] : ''; + // validate channel width for 802.11ax/be + if (in_array($hwMode, ['ax', 'be'])) { + // for 6GHz band (channels 1-233) wider bandwidths are available + $is6GHz = ($params['channel'] >= 1 && $params['channel'] <= 233); + + // for 802.11be, 320 MHz only available on 6GHz + if ($hwMode === 'be' && !$is6GHz && isset($params['eht_oper_chwidth']) && $params['eht_oper_chwidth'] == 4) { + // reset to 160 MHz if 320 MHz requested on non-6GHz + $params['eht_oper_chwidth'] = 2; + } + } + // fetch settings for selected mode $modeSettings = getDefaultNetOpts('hostapd', 'modes', $hwMode); $settings = $modeSettings[$hwMode]['settings'] ?? []; + // extract channel width from settings to calculate center frequency + $chwidth = $this->extractChannelWidth($settings, $hwMode); + + // calculate center frequency indices based on channel + width + $vht_freq_idx = $this->calculateCenterFreqIndex((int)$params['channel'], $chwidth); + $he_freq_idx = $vht_freq_idx; // For most cases, HE and VHT use the same center frequency + + // calculate HT40 direction based on channel and width + $ht40_dir = $this->calculateHT40Direction((int)$params['channel'], $chwidth); + if (!empty($settings)) { foreach ($settings as $line) { if (!is_string($line)) { continue; } - $replaced = str_replace('{VHT_FREQ_IDX}', (string) $vht_freq_idx ?? '',$line); + $replaced = str_replace('{VHT_FREQ_IDX}', (string) $vht_freq_idx ?? '', $line); + $replaced = str_replace('{HE_FREQ_IDX}', (string) $he_freq_idx ?? '', $replaced); + $replaced = str_replace('{HT40_DIR}', (string) $ht40_dir ?? '', $replaced); $config[] = $replaced; } } @@ -209,9 +235,9 @@ class HostapdManager } // bridge handling - if (!empty($params['bridge'])) { + if (!empty($params['bridgeName'])) { $config[] = 'interface=' . $params['interface']; - $config[] = 'bridge=' . $params['bridge']; + $config[] = 'bridge=' . $params['bridgeName']; } else { $config[] = 'interface=' . $params['interface']; } @@ -225,6 +251,12 @@ class HostapdManager $config[] = 'max_num_sta=' . (int)$params['max_num_sta']; } + // add logging configuration if enabled + if (!empty($params['log_enable'])) { + $config[] = 'logger_syslog=-1'; + $config[] = 'logger_syslog_level=0'; + } + // optional additional user config $config[] = $this->parseUserHostapdCfg(); @@ -325,17 +357,6 @@ class HostapdManager return [$apIface, $cliIface, $sessionIface]; } - /** - * Enables or disables hostapd logging - * - * @param int $logEnable - */ - private function handleLogState(int $logEnable): void - { - $script = $logEnable === 1 ? 'enablelog.sh' : 'disablelog.sh'; - exec('sudo ' . RASPI_CONFIG . '/hostapd/' . $script); - } - /** * Parses optional /etc/hostapd/hostapd.conf.users file * @@ -415,8 +436,6 @@ class HostapdManager */ public function persistHostapdIni(array $states, string $apIface, string $cliIface, array $previousIni = []): bool { - $this->applyLogState($states['LogEnable']); - // compose new ini payload $cfg = [ 'WifiInterface' => $apIface, @@ -435,17 +454,6 @@ class HostapdManager return write_php_ini($cfg, RASPI_CONFIG . '/hostapd.ini'); } - /** - * Enables or disables hostapd logging - * - * @param int $logEnable 1 = enable, 0 = disable - */ - private function applyLogState(int $logEnable): void - { - $script = $logEnable === 1 ? 'enablelog.sh' : 'disablelog.sh'; - exec('sudo ' . RASPI_CONFIG . '/hostapd/' . $script); - } - /** * Returns a count of hostapd-.conf files * @@ -457,5 +465,241 @@ class HostapdManager return is_array($configs) ? count($configs) : 0; } -} + /** + * Extracts channel width from mode settings + * + * @param array $settings mode settings array + * @param string $hwMode hardware mode (ac, ax, be) + * @return int channel width in MHz (20, 40, 80, 160, 320) + */ + private function extractChannelWidth(array $settings, string $hwMode): int + { + $chwidthParam = ''; + // determine parameter based on mode + if ($hwMode === 'ac') { + $chwidthParam = 'vht_oper_chwidth'; + } elseif ($hwMode === 'ax') { + $chwidthParam = 'he_oper_chwidth'; + } elseif ($hwMode === 'be') { + $chwidthParam = 'eht_oper_chwidth'; + } else { + return 20; // 20 MHz default for other modes + } + + // parse settings to find channel width + foreach ($settings as $line) { + if (!is_string($line)) { + continue; + } + + // skip comments + if (strpos(trim($line), '#') === 0) { + continue; + } + + if (strpos($line, $chwidthParam . '=') !== false) { + $parts = explode('=', $line, 2); + if (count($parts) === 2) { + // extract numeric value + $value = trim($parts[1]); + // remove any inline comments + $value = preg_replace('/\s*#.*$/', '', $value); + $chwidthCode = (int) $value; + + // convert hostapd encoding to MHz based on mode + if ($hwMode === 'be') { + // EHT uses: 0=20, 1=40, 2=80, 3=160, 4=320 + switch ($chwidthCode) { + case 0: return 20; + case 1: return 40; + case 2: return 80; + case 3: return 160; + case 4: return 320; + default: return 20; + } + } else { + // VHT/HE uses: 0=20/40, 1=80, 2=160, 3=80+80 + switch ($chwidthCode) { + case 0: return 40; + case 1: return 80; + case 2: return 160; + case 3: return 160; // 80+80 treated as 160 + default: return 20; + } + } + } + } + } + + return 20; // default to 20 MHz channel if not found + } + + /** + * Calculates center frequency segment 0 index for given channel and width + * + * @param int $channel primary channel number + * @param int $chwidthMHz channel width in MHz (20, 40, 80, 160, 320) + * @return int center frequency segment 0 index + */ + private function calculateCenterFreqIndex(int $channel, int $chwidthMHz): int + { + // determine band based on channel number + $is24GHz = ($channel >= 1 && $channel <= 14); + $is5GHz = ($channel >= 36 && $channel <= 177); + $is6GHz = ($channel >= 1 && $channel <= 233 && !$is24GHz); // 6 GHz uses 1-233 + + // 20 MHz - center is always primary channel + if ($chwidthMHz <= 20) { + return $channel; + } + + // 2.4 GHz band + if ($is24GHz) { + if ($chwidthMHz == 40) { + // for 2.4 GHz, typically use HT40+ (center is primary + 2) + // channels 1-7 use HT40+, channels 8-13 use HT40- + return ($channel <= 7) ? $channel + 2 : $channel - 2; + } + // wider bandwidths not supported on 2.4 GHz + return $channel; + } + + // 5 GHz band + if ($is5GHz) { + if ($chwidthMHz == 40) { + // HT40+ configuration: center = primary + 2 + // adjust for upper/lower position in 40 MHz pair + if (in_array($channel, [36, 44, 52, 60, 100, 108, 116, 124, 132, 140, 149, 157, 165, 173])) { + return $channel + 2; + } else { + return $channel - 2; + } + } + + if ($chwidthMHz == 80) { + // map channel to 80 MHz center frequency + if ($channel >= 36 && $channel <= 48) return 42; + if ($channel >= 52 && $channel <= 64) return 58; + if ($channel >= 100 && $channel <= 112) return 106; + if ($channel >= 116 && $channel <= 128) return 122; + if ($channel >= 132 && $channel <= 144) return 138; + if ($channel >= 149 && $channel <= 161) return 155; + if ($channel >= 165 && $channel <= 177) return 171; + } + + if ($chwidthMHz == 160) { + // map channel to 160 MHz center frequency + if ($channel >= 36 && $channel <= 64) return 50; + if ($channel >= 100 && $channel <= 128) return 114; + // channels 149-177 don't support 160 MHz in most regions + if ($channel >= 149 && $channel <= 177) return 163; + } + } + + // 6 GHz band (UNII-5 through UNII-8) + if ($is6GHz && !$is24GHz) { + // 6 GHz uses different channel numbering: 1, 5, 9, 13, ... (every 4) + if ($chwidthMHz == 40) { + // center is at the midpoint between two 20 MHz channels + return $channel + 2; + } + + if ($chwidthMHz == 80) { + // calculate 80 MHz center + $blockStart = (int)(($channel - 1) / 16) * 16 + 1; + return $blockStart + 6; + } + + if ($chwidthMHz == 160) { + // calculate 160 MHz center + $blockStart = (int)(($channel - 1) / 32) * 32 + 1; + return $blockStart + 14; + } + + if ($chwidthMHz == 320) { + // calculate 320 MHz center + $blockStart = (int)(($channel - 1) / 64) * 64 + 1; + return $blockStart + 30; + } + } + + // fallback: return primary channel + return $channel; + } + + /** + * Calculates HT40 direction (+ or -) based on channel and bandwidth + * + * @param int $channel primary channel number + * @param int $chwidthMHz channel width in MHz + * @return string HT40 direction: "HT40+" or "HT40-" or "" for 20MHz + */ + private function calculateHT40Direction(int $channel, int $chwidthMHz): string + { + // only applicable for 40 MHz and wider on 5 GHz + if ($chwidthMHz < 40) { + return ''; + } + + $is24GHz = ($channel >= 1 && $channel <= 14); + $is5GHz = ($channel >= 36 && $channel <= 177); + + // 2.4 GHz band + if ($is24GHz) { + // channels 1-7 use HT40+, channels 8-13 use HT40- + return ($channel <= 7) ? 'HT40+' : 'HT40-'; + } + + // 5 GHz band + if ($is5GHz) { + if ($chwidthMHz == 40) { + // for pure 40 MHz mode + if (in_array($channel, [36, 44, 52, 60, 100, 108, 116, 124, 132, 140, 149, 157, 165, 173])) { + return 'HT40+'; + } else { + return 'HT40-'; + } + } + + if ($chwidthMHz >= 80) { + // for 80 MHz and wider, determine based on position within the 80 MHz block + // lower half of 80 MHz block uses HT40+, upper half uses HT40- + + // determine which 80 MHz block this channel belongs to + if ($channel >= 36 && $channel <= 48) { + // block: 36, 40, 44, 48 (center 42) + return ($channel <= 40) ? 'HT40+' : 'HT40-'; + } + if ($channel >= 52 && $channel <= 64) { + // block: 52, 56, 60, 64 (center 58) + return ($channel <= 56) ? 'HT40+' : 'HT40-'; + } + if ($channel >= 100 && $channel <= 112) { + // block: 100, 104, 108, 112 (center 106) + return ($channel <= 104) ? 'HT40+' : 'HT40-'; + } + if ($channel >= 116 && $channel <= 128) { + // block: 116, 120, 124, 128 (center 122) + return ($channel <= 120) ? 'HT40+' : 'HT40-'; + } + if ($channel >= 132 && $channel <= 144) { + // block: 132, 136, 140, 144 (center 138) + return ($channel <= 136) ? 'HT40+' : 'HT40-'; + } + if ($channel >= 149 && $channel <= 161) { + // block: 149, 153, 157, 161 (center 155) + return ($channel <= 153) ? 'HT40+' : 'HT40-'; + } + if ($channel >= 165 && $channel <= 177) { + // block: 165, 169, 173, 177 (center 171) + return ($channel <= 169) ? 'HT40+' : 'HT40-'; + } + } + } + + // default fallback + return 'HT40+'; + } + +} diff --git a/src/RaspAP/Networking/Hotspot/HotspotService.php b/src/RaspAP/Networking/Hotspot/HotspotService.php index 0984634c..8322cd1c 100644 --- a/src/RaspAP/Networking/Hotspot/HotspotService.php +++ b/src/RaspAP/Networking/Hotspot/HotspotService.php @@ -32,7 +32,9 @@ class HotspotService 'b' => '802.11b - 2.4 GHz', 'g' => '802.11g - 2.4 GHz', 'n' => '802.11n - 2.4/5 GHz', - 'ac' => '802.11ac - 5 GHz' + 'ac' => '802.11ac - 5 GHz', + 'ax' => '802.11ax - 2.4/5/6 GHz', + 'be' => '802.11be - 2.4/5/6 GHz' ]; // encryption types @@ -42,6 +44,21 @@ class HotspotService 'TKIP CCMP' => 'TKIP+CCMP' ]; + // 802.11ax (Wi-Fi 6) channel widths + private const HE_CHANNEL_WIDTHS = [ + 0 => '20/40 MHz', + 1 => '80 MHz', + 2 => '160 MHz' + ]; + + // 802.11be (Wi-Fi 7) channel widths + private const EHT_CHANNEL_WIDTHS = [ + 0 => '20 MHz', + 1 => '40 MHz', + 2 => '80 MHz', + 3 => '160 MHz', + 4 => '320 MHz (6 GHz only)' + ]; public function __construct() { @@ -67,7 +84,23 @@ class HotspotService } /** - * Returns translated security modes. + * Returns 802.11ax (Wi-Fi 6) channel widths + */ + public static function getHeChannelWidths(): array + { + return self::HE_CHANNEL_WIDTHS; + } + + /** + * Returns 802.11be (Wi-Fi 7) channel widths + */ + public static function getEhtChannelWidths(): array + { + return self::EHT_CHANNEL_WIDTHS; + } + + /** + * Returns translated security modes */ public static function getSecurityModes(): array { @@ -94,7 +127,6 @@ class HotspotService ]; } - /** * Validates user input + saves configs for hostapd, dnsmasq & dhcp * @@ -138,19 +170,26 @@ class HotspotService if ($validated === false) { $status->addMessage('Unable to save WiFi hotspot settings due to validation errors', 'danger'); - error_log("HotspotService::validate() -> validated = false"); return false; } try { // normalize state flags $validated['interface'] = $apIface; + $validated["bridgeName"] = !empty($states["BridgedEnable"]) ? "br0" : null; $validated['bridge'] = !empty($states['BridgedEnable']); $validated['apsta'] = !empty($states['WifiAPEnable']); $validated['repeater'] = !empty($states['RepeaterEnable']); $validated['dualmode'] = !empty($states['DualAPEnable']); $validated['txpower'] = $post_data['txpower']; + // add 802.11ax/be specific parameters if present + if (in_array($validated['hw_mode'], ['ax', 'be'])) { + if ($validated['wpa'] < 4 && $validated['hw_mode'] === 'be') { + $status->addMessage('Note: WiFi 7 works best with WPA3 security', 'info'); + } + } + // hostapd $config = $this->hostapd->buildConfig($validated, $status); $this->hostapd->saveConfig($config, $dualAPEnable, $validated['interface']); @@ -295,10 +334,22 @@ class HotspotService * Gets the current regulatory domain * * @return string + * @throws RuntimeException if unable to determine regulatory domain */ public function getRegDomain(): string { $domain = shell_exec("iw reg get | grep -o 'country [A-Z]\{2\}' | awk 'NR==1{print $2}'"); + + if ($domain === null) { + throw new \RuntimeException('Failed to execute regulatory domain command'); + } + + $domain = trim($domain); + + if (empty($domain)) { + throw new \RuntimeException('Unable to determine regulatory domain'); + } + return $domain; } @@ -339,6 +390,36 @@ class HotspotService return array_values($interfaces); } + /** + * Retrieves hostapd service logs from systemd journal + * + * @param int $lines number of log lines to retrieve (default: 100, max: 1000) + * @param bool $follow return command for real-time following (tbd) + * @return array ['success' => bool, 'logs' => array, 'command' => string] + */ + public function getHostapdLogs(int $lines = 100, bool $follow = false): array + { + // sanitize and limit line count + $lines = max(1, min(1000, $lines)); + + if ($follow) { + return [ + 'success' => true, + 'logs' => [], + 'command' => 'journalctl -u hostapd.service -f --no-pager' + ]; + } + + $cmd = sprintf('sudo journalctl -u hostapd.service -n %d --no-pager 2>&1', $lines); + exec($cmd, $output, $status); + + return [ + 'success' => $status === 0, + 'logs' => $output, + 'line_count' => count($output) + ]; + } + /** * Starts services for given interface * diff --git a/src/RaspAP/Networking/Hotspot/Validators/HostapdValidator.php b/src/RaspAP/Networking/Hotspot/Validators/HostapdValidator.php index 83627e11..80dbb832 100644 --- a/src/RaspAP/Networking/Hotspot/Validators/HostapdValidator.php +++ b/src/RaspAP/Networking/Hotspot/Validators/HostapdValidator.php @@ -16,6 +16,15 @@ use RaspAP\Messages\StatusMessage; class HostapdValidator { + // Valid channel widths for 802.11ax (HE) + private const HE_VALID_CHWIDTHS = [0, 1, 2]; // 20/40, 80, 160 MHz + + // Valid channel widths for 802.11be (EHT) + private const EHT_VALID_CHWIDTHS = [0, 1, 2, 3, 4]; // 20, 40, 80, 160, 320 MHz + + // 6 GHz channel range (US) + private const CHANNEL_6GHZ_MIN = 1; + private const CHANNEL_6GHZ_MAX = 233; /** * Validates full hostapd parameter set @@ -64,6 +73,16 @@ class HostapdValidator $goodInput = false; } + // validate 802.11ax specific parameters + if ($post['hw_mode'] === 'ax' && !$this->validateAxParams($post, $status)) { + $goodInput = false; + } + + // validate 802.11be specific parameters + if ($post['hw_mode'] === 'be' && !$this->validateBeParams($post, $status)) { + $goodInput = false; + } + // validate SSID if (empty($post['ssid']) || strlen($post['ssid']) > 32) { $status->addMessage('SSID must be between 1 and 32 characters', 'danger'); @@ -200,9 +219,97 @@ class HostapdValidator 'bridgeStaticIp' => ($post['bridgeStaticIp']), 'bridgeNetmask' => ($post['bridgeNetmask']), 'bridgeGateway' => ($post['bridgeGateway']), - 'bridgeDNS' => ($post['bridgeDNS']) + 'bridgeDNS' => ($post['bridgeDNS']), + 'he_oper_chwidth' => $post['he_oper_chwidth'] ?? null, // 802.11ax parameters + 'he_bss_color' => $post['he_bss_color'] ?? null, // 802.11be parameters + 'eht_oper_chwidth' => $post['eht_oper_chwidth'] ?? null ]; } + /** + * Validates 802.11ax (Wi-Fi 6) specific parameters + * + * @param array $post + * @param StatusMessage $status + * @return bool + */ + private function validateAxParams(array $post, StatusMessage $status): bool + { + $valid = true; + + // Validate HE channel width + if (isset($post['he_oper_chwidth'])) { + $chwidth = (int)$post['he_oper_chwidth']; + if (!in_array($chwidth, self::HE_VALID_CHWIDTHS, true)) { + $status->addMessage('Invalid 802.11ax channel width. Must be 0 (20/40 MHz), 1 (80 MHz), or 2 (160 MHz)', 'danger'); + $valid = false; + } + } + + // Validate BSS color (1-63) + if (isset($post['he_bss_color'])) { + $bssColor = (int)$post['he_bss_color']; + if ($bssColor < 1 || $bssColor > 63) { + $status->addMessage('802.11ax BSS color must be between 1 and 63', 'danger'); + $valid = false; + } + } + + return $valid; + } + + /** + * Validates 802.11be (Wi-Fi 7) specific parameters + * + * @param array $post + * @param StatusMessage $status + * @return bool + */ + private function validateBeParams(array $post, StatusMessage $status): bool + { + $valid = true; + $channel = (int)$post['channel']; + + // Validate EHT channel width + if (isset($post['eht_oper_chwidth'])) { + $chwidth = (int)$post['eht_oper_chwidth']; + + if (!in_array($chwidth, self::EHT_VALID_CHWIDTHS, true)) { + $status->addMessage('Invalid 802.11be channel width. Must be 0-4 (20, 40, 80, 160, or 320 MHz)', 'danger'); + $valid = false; + } + + // 320 MHz only valid on 6 GHz band + if ($chwidth === 4) { + if ($channel < self::CHANNEL_6GHZ_MIN || $channel > self::CHANNEL_6GHZ_MAX) { + $status->addMessage('802.11be 320 MHz channel width is only available on 6 GHz band (channels 1-233)', 'danger'); + $valid = false; + } + } + } + + // Validate BSS color (same as 802.11ax, inherited) + if (isset($post['he_bss_color'])) { + $bssColor = (int)$post['he_bss_color']; + if ($bssColor < 1 || $bssColor > 63) { + $status->addMessage('BSS color must be between 1 and 63', 'danger'); + $valid = false; + } + } + + return $valid; + } + + /** + * Checks if channel is in 6GHz band + * + * @param int $channel + * @return bool + */ + private function is6GHzChannel(int $channel): bool + { + return $channel >= self::CHANNEL_6GHZ_MIN && $channel <= self::CHANNEL_6GHZ_MAX; + } + } diff --git a/src/RaspAP/Networking/Hotspot/WiFiManager.php b/src/RaspAP/Networking/Hotspot/WiFiManager.php index 1c69e49e..e781e5ce 100644 --- a/src/RaspAP/Networking/Hotspot/WiFiManager.php +++ b/src/RaspAP/Networking/Hotspot/WiFiManager.php @@ -16,16 +16,15 @@ class WiFiManager private const MIN_RSSI = -100; private const MAX_RSSI = -55; + const SECURITY_OPEN = 'OPEN'; public function knownWifiStations(&$networks) { // find currently configured networks exec(' sudo cat ' . RASPI_WPA_SUPPLICANT_CONFIG, $known_return); - $index = 0; foreach ($known_return as $line) { if (preg_match('/network\s*=/', $line)) { $network = array('visible' => false, 'configured' => true, 'connected' => false, 'index' => null); - ++$index; } elseif (isset($network) && $network !== null) { if (preg_match('/^\s*}\s*$/', $line)) { $networks[$ssid] = $network; @@ -37,8 +36,7 @@ class WiFiManager $ssid = trim($lineArr[1], '"'); $ssid = str_replace('P"','',$ssid); $network['ssid'] = $ssid; - $index = $this->getNetworkIdBySSID($ssid); - $network['index'] = $index; + $network['index'] = $this->getNetworkIdBySSID($ssid); break; case 'psk': $network['passkey'] = trim($lineArr[1]); @@ -51,7 +49,7 @@ class WiFiManager break; case 'key_mgmt': if (! array_key_exists('passphrase', $network) && $lineArr[1] === 'NONE') { - $network['protocol'] = 'Open'; + $network['protocol'] = self::SECURITY_OPEN; } break; case 'priority': @@ -84,24 +82,27 @@ class WiFiManager $cacheKey, function () use ($iface) { $stdout = shell_exec("sudo iw dev $iface scan"); + sleep(1); + if ($stdout === null) { + return []; + } return preg_split("/\n/", $stdout); } ); - // exclude the AP from nearby networks - exec('sed -rn "s/ssid=(.*)\s*$/\1/p" ' . escapeshellarg(RASPI_HOSTAPD_CONFIG), $ap_ssid); - $ap_ssid = $ap_ssid[0] ?? ''; - + // determine the next index that follows the indexes of the known networks $index = 0; if (!empty($networks)) { - $lastnet = end($networks); - if (isset($lastnet['index'])) { - $index = $lastnet['index'] + 1; + foreach ($networks as $network) { + if (isset($network['index']) && is_numeric($network['index']) && ($network['index'] > $index)) { + $index = (int)$network['index']; + } } } + $index++; $current = []; - $commitCurrent = function () use (&$current, &$networks, &$index, $ap_ssid) { + $commitCurrent = function () use (&$current, &$networks, &$index) { if (empty($current['ssid'])) { return; } @@ -109,7 +110,7 @@ class WiFiManager $ssid = $current['ssid']; // unprintable 7bit ASCII control codes, delete or quotes -> ignore network - if ($ssid === $ap_ssid || preg_match('/[\x00-\x1f\x7f\'`\´"]/', $ssid)) { + if (preg_match('/[\x00-\x1f\x7f\'`\´"]/', $ssid)) { return; } @@ -127,7 +128,7 @@ class WiFiManager $networks[$ssid] = [ 'ssid' => $ssid, 'configured' => false, - 'protocol' => $current['security'] ?? 'OPEN', + 'protocol' => $current['security'] ?? self::SECURITY_OPEN, 'channel' => $channel, 'passphrase' => '', 'visible' => true, @@ -135,9 +136,13 @@ class WiFiManager 'RSSI' => $rssi, 'index' => $index ]; - ++$index; + $index++; // increment for next new network } }; + + if (is_string($scan_results)) { + $scan_results = explode("\n", trim($scan_results)); + } foreach ($scan_results as $line) { $line = trim($line); @@ -149,7 +154,7 @@ class WiFiManager 'ssid' => '', 'signal' => null, 'freq' => null, - 'security' => 'OPEN' + 'security' => self::SECURITY_OPEN ]; continue; } @@ -172,20 +177,50 @@ class WiFiManager } $commitCurrent(); } - /** - * + * Check if networks are connected via wpa_cli status + * NB: iwconfig shows the last associated SSID even when connection is inactive */ public function connectedWifiStations(&$networks) { - exec('iwconfig ' .$_SESSION['wifi_client_interface'], $iwconfig_return); - foreach ($iwconfig_return as $line) { - if (preg_match('/ESSID:\"([^"]+)\"/i', $line, $iwconfig_ssid)) { - $ssid=hexSequence2lower($iwconfig_ssid[1]); - $networks[$ssid]['connected'] = true; - //$check=detectCaptivePortal($_SESSION['wifi_client_interface']); - $networks[$ssid]["portal-url"]=$check["URL"]; + $wpa_state = null; + $connected_ssid = null; + $iface = $_SESSION['wifi_client_interface']; + + $cmd = "sudo wpa_cli -i $iface status"; + $status_output = shell_exec($cmd); + + if ($status_output === null || empty($status_output)) { + error_log("WiFiManager::connectedWifiStations: wpa_cli command failed or returned no output"); + return; + } + $lines = explode("\n", trim($status_output)); + + foreach ($lines as $line) { + $line = trim($line); + if (preg_match('/^wpa_state=(.+)$/', $line, $matches)) { + $wpa_state = trim($matches[1]); } + if (preg_match('/^ssid=(.+)$/', $line, $matches)) { + $connected_ssid = trim($matches[1]); + } + } + + if ($wpa_state === 'COMPLETED' && !empty($connected_ssid)) { + $ssid = hexSequence2lower($connected_ssid); + + // check if this SSID exists in networks array + if (array_key_exists($ssid, $networks)) { + $networks[$ssid]['connected'] = true; + } else { + error_log("WiFiManager::connectedWifiStations: SSID '$ssid' not found. SSIDs: " . implode(', ', array_keys($networks))); + } + + // captive portal detection + // $check = detectCaptivePortal($iface); + // if (isset($check["URL"])) { + // $networks[$ssid]["portal-url"] = $check["URL"]; + // } } } @@ -250,8 +285,11 @@ class WiFiManager { $iface = $_SESSION['wifi_client_interface']; if ($force == true) { - $cmd = "sudo /sbin/wpa_supplicant -i $unescapedIface -c /etc/wpa_supplicant/wpa_supplicant.conf -B 2>&1"; + $cmd = "sudo rm -f /var/run/wpa_supplicant/" . $iface; $result = shell_exec($cmd); + $cmd = "sudo /sbin/wpa_supplicant -i $iface -c /etc/wpa_supplicant/wpa_supplicant.conf -B 2>&1"; + $result = shell_exec($cmd); + sleep(2); } $cmd = "sudo wpa_cli -i $iface reconfigure"; $result = shell_exec($cmd); @@ -420,7 +458,7 @@ class WiFiManager "sudo wpa_cli -i $iface set_network $netid ssid $ssid", ]; - if (strtolower($protocol) === 'open') { + if ($protocol === self::SECURITY_OPEN) { $commands[] = "sudo wpa_cli -i $iface set_network $netid key_mgmt NONE"; } else { $commands[] = "sudo wpa_cli -i $iface set_network $netid psk $psk"; @@ -442,12 +480,12 @@ class WiFiManager error_log("Successfully added network: {$network['ssid']}"); } - /* + /** * Parses wpa_cli list_networks output and returns the id * of a corresponding network SSID * * @param string $ssid - * @return integer id + * @return integer id or null */ public function getNetworkIdBySSID($ssid) { $iface = escapeshellarg($_SESSION['wifi_client_interface']); @@ -455,10 +493,11 @@ class WiFiManager $output = []; exec($cmd, $output); array_shift($output); + foreach ($output as $line) { $columns = preg_split('/\t/', $line); - if (count($columns) >= 4 && trim($columns[1]) === trim($ssid)) { - return $columns[0]; // return network ID + if (count($columns) >= 2 && trim($columns[1]) === trim($ssid)) { + return (int)$columns[0]; // return network ID } } return null; @@ -513,5 +552,211 @@ CONF; } } -} + /** + * Gets the operational status of a network interface + * + * @param string $interface network interface name + * @return string returns up, down, or unknown + */ + public function getInterfaceStatus(string $interface): string + { + exec('ip a show ' . escapeshellarg($interface), $output); + $outputGlued = implode(" ", $output); + $outputNormalized = preg_replace('/\s\s+/', ' ', $outputGlued); + + if (preg_match('/state (UP|DOWN)/i', $outputNormalized, $matches)) { + return strtolower($matches[1]); + } + + return 'unknown'; + } + + /** + * Connects to a network using wpa_cli + * + * @param string $interface network interface name + * @param int $netid network ID to connect to + * @return bool true on success, false on failure + */ + public function connectToNetwork(string $interface, int $netid): bool + { + $iface = escapeshellarg($interface); + + $cmd = "sudo wpa_cli -i $iface select_network $netid"; + $selectResult = shell_exec($cmd); + + if ($selectResult === null || trim($selectResult) === "FAIL") { + return false; + } + sleep(3); + + $cmd = "sudo wpa_cli -i $iface reassociate"; + $reassociateResult = shell_exec($cmd); + + if ($reassociateResult !== null) { + $trimmed = trim($reassociateResult); + if ($trimmed === "FAIL") { + return false; + } + } + + return true; + } + + /** + * Deletes a network from wpa_cli + * + * @param string $interface network interface name + * @param int $netid network ID to delete + * @return void + */ + public function deleteNetwork(string $interface, int $netid): void + { + $iface = escapeshellarg($interface); + + exec("sudo wpa_cli -i $iface disconnect $netid"); + exec("sudo wpa_cli -i $iface remove_network $netid"); + } + + /** + * Disconnects from a network using wpa_cli + * + * @param string $interface network interface name + * @param int $netid network ID to disconnect from + * @return void + */ + public function disconnectNetwork(string $interface, int $netid): void + { + $iface = escapeshellarg($interface); + + exec("sudo wpa_cli -i $iface disconnect $netid"); + exec("sudo wpa_cli -i $iface remove_network $netid"); + sleep(2); + } + + /** + * Updates/adds a network via wpa_cli + * + * @param string $interface network interface name + * @param string $ssid network SSID + * @param string $passphrase network passphrase + * @param string $protocol security protocol (OPEN or WPA) + * @return int|null network ID on success, null on failure + */ + public function updateNetwork(string $interface, string $ssid, string $passphrase, string $protocol = 'WPA'): ?int + { + $iface = escapeshellarg($interface); + $escapedSsid = escapeshellarg('"' . $ssid . '"'); + + $netid = shell_exec("sudo wpa_cli -i $iface add_network"); + + if ($netid === null || !is_numeric(trim($netid))) { + return null; + } + + $netid = trim($netid); + $commands = [ + "sudo wpa_cli -i $iface set_network $netid ssid $escapedSsid" + ]; + + if ($protocol === self::SECURITY_OPEN) { + $commands[] = "sudo wpa_cli -i $iface set_network $netid key_mgmt NONE"; + } else { + $escapedPsk = escapeshellarg('"' . $passphrase . '"'); + $commands[] = "sudo wpa_cli -i $iface set_network $netid psk $escapedPsk"; + } + + $commands[] = "sudo wpa_cli -i $iface enable_network $netid"; + + foreach ($commands as $cmd) { + exec($cmd); + } + + return (int)$netid; + } + + /** + * Writes a wpa_supplicant configuration and applies it + * + * @param array $networks array of network configurations + * @param string $interface the network interface name + * @return array Array with 'success' (bool) and 'message' (string) + */ + public function writeWpaSupplicant(array $networks, string $interface): array + { + $wpa_file = fopen('/tmp/wifidata', 'w'); + if (!$wpa_file) { + return ['success' => false, 'message' => 'Failed to update wifi settings']; + } + + fwrite($wpa_file, 'ctrl_interface=DIR=' . RASPI_WPA_CTRL_INTERFACE . ' GROUP=netdev' . PHP_EOL); + fwrite($wpa_file, 'update_config=1' . PHP_EOL); + + $ok = true; + foreach ($networks as $ssid => $network) { + if ($network['protocol'] === self::SECURITY_OPEN) { + fwrite($wpa_file, "network={".PHP_EOL); + fwrite($wpa_file, "\tssid=\"".$ssid."\"".PHP_EOL); + fwrite($wpa_file, "\tkey_mgmt=NONE".PHP_EOL); + fwrite($wpa_file, "\tscan_ssid=1".PHP_EOL); + if (array_key_exists('priority', $network)) { + fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL); + } + fwrite($wpa_file, "}".PHP_EOL); + } else { + if (strlen($network['passphrase']) >= 8 && strlen($network['passphrase']) <= 63) { + unset($wpa_passphrase); + unset($line); + exec('wpa_passphrase '. $this->ssid2utf8(escapeshellarg($ssid)) . ' ' . escapeshellarg($network['passphrase']), $wpa_passphrase); + foreach ($wpa_passphrase as $line) { + if (preg_match('/^\s*}\s*$/', $line)) { + if (array_key_exists('priority', $network)) { + fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL); + } + fwrite($wpa_file, $line.PHP_EOL); + } else { + if (preg_match('/\\\\x[0-9A-Fa-f]{2}/', $ssid) && strpos($line, "ssid=\"") !== false) { + fwrite($wpa_file, "\tssid=P\"".$ssid."\"".PHP_EOL); + } else { + fwrite($wpa_file, $line.PHP_EOL); + } + } + } + } elseif (strlen($network['passphrase']) == 0 && strlen($network['passkey']) == 64) { + $line = "\tpsk=" . $network['passkey']; + fwrite($wpa_file, "network={".PHP_EOL); + fwrite($wpa_file, "\tssid=\"".$ssid."\"".PHP_EOL); + fwrite($wpa_file, $line.PHP_EOL); + if (array_key_exists('priority', $network)) { + fwrite($wpa_file, "\tpriority=".$network['priority'].PHP_EOL); + } + fwrite($wpa_file, "}".PHP_EOL); + } else { + $ok = false; + fclose($wpa_file); + return ['success' => false, 'message' => 'WPA passphrase must be between 8 and 63 characters']; + } + } + } + + fclose($wpa_file); + + if ($ok) { + system('sudo cp /tmp/wifidata ' . RASPI_WPA_SUPPLICANT_CONFIG, $returnval); + if ($returnval == 0) { + exec('sudo wpa_cli -i ' . escapeshellarg($interface) . ' reconfigure', $reconfigure_out, $reconfigure_return); + if ($reconfigure_return == 0) { + return ['success' => true, 'message' => 'Wifi settings updated successfully']; + } else { + return ['success' => false, 'message' => 'Wifi settings updated but cannot restart (cannot execute "wpa_cli reconfigure")']; + } + } else { + return ['success' => false, 'message' => 'Wifi settings failed to be updated']; + } + } + + return ['success' => false, 'message' => 'Unknown error']; + } + +} diff --git a/templates/about/general.php b/templates/about/general.php index 33c4e873..11211665 100644 --- a/templates/about/general.php +++ b/templates/about/general.php @@ -15,11 +15,20 @@
-
RaspAP is a co-creation of billz and SirLagz - with the contributions of our developer community - and language translators. - Learn more about joining the project as a code contributor, - translator or financial sponsor with immediate access to exclusive features available to Insiders.
+